1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

コマンドラインからAnsible Playbookへの変数引き渡し方法

Posted at

はじめに

AnsibleのPlaybook内で使用する変数値を、ansible-playbookコマンドでPlaybookを実行するときに合わせて指定する方法がないかを調べてみました。下記のブログに記載されている--extra-varsオプションを指定すれば、コマンドライン上でAnsible Playbookに変数を引き渡すことが可能です。

Ansibleの変数の受け渡し

上記のブログを参考に、実際に--extra-varsオプションを使って、Playbookへの変数引き渡しをテストしてみました。

テスト環境

  • Ubuntu 22.04.LTS
  • ansible 2.10.8
  • python version =3.10.4

テスト用Playbook

テスト用Playbookとして、AWSクラウド上にVPCを作成し、作成したVPCの情報を出力するaws_vpccre.yamlというPlaybookを作成しました。

aws_vpccre.yaml
- hosts: localhost
  gather_facts: false

  tasks:

    - name: create vpc with aws Tokyo Region
      ec2_vpc_net:
        name: "{{vpc_name}}"
        cidr_block: "{{vpc_cidr_block}}"
        dns_hostnames: yes
        dns_support: yes
        tenancy: default
        state: present
      register: vpc_net

    - name: get vpc information
      debug:
        msg: "{{vpc_net}}"

コマンドラインから指定する外部変数として、vpc_namevpc_cidr_blockの2つを用意しました。今回は、これらの変数に以下の値を指定することとします。

  • vpc_name:My-VPC-01 (VPCの名前)
  • vpc_cidr_block:10.0.0.0/16 (VPCのアドレス範囲:CIDR表記)

コマンドラインからの変数引き渡しテスト

ansible-playbookコマンド実行時に、--extra-varsオプション及び外部変数値を指定し、変数引き渡しを行います。

$ ansible-playbook aws_vpccre.yaml --extra-vars "vpc_name=My-VPC-01 vpc_cidr_block=10.0.0.0/16"

下記出力結果における、cidr_blockNameの箇所にansible-playbookコマンド実行時に指定した外部変数の値が正しく引き渡されていることが確認できました。

[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost
does not match 'all'

PLAY [localhost] **************************************************************************************

TASK [create vpc with aws Tokyo Region] ***************************************************************
ok: [localhost]

TASK [get vpc information] ****************************************************************************
ok: [localhost] => {
    "msg": {
        "changed": false,
        "debugging": {
            "expected_cidrs": [
                "10.0.0.0/16"
            ],
            "to_add": [],
            "to_remove": []
        },
        "failed": false,
        "vpc": {
            "cidr_block": "10.0.0.0/16",
            "cidr_block_association_set": [
                {
                    "association_id": "vpc-cidr-assoc-04a94dc192fb8e26f",
                    "cidr_block": "10.0.0.0/16",
                    "cidr_block_state": {
                        "state": "associated"
                    }
                }
            ],
            "classic_link_enabled": false,
            "dhcp_options_id": "dopt-92af86f5",
            "id": "vpc-0a68d6433ff84c34b",
            "instance_tenancy": "default",
            "is_default": false,
            "owner_id": "182497541992",
            "state": "available",
            "tags": {
                "Name": "My-VPC-01"
            }
        }
    }
}

PLAY RECAP ********************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?