はじめに
AnsibleのPlaybook内で使用する変数値を、ansible-playbookコマンドでPlaybookを実行するときに合わせて指定する方法がないかを調べてみました。下記のブログに記載されている--extra-varsオプションを指定すれば、コマンドライン上でAnsible Playbookに変数を引き渡すことが可能です。
上記のブログを参考に、実際に--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を作成しました。
- 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_nameとvpc_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_blockとNameの箇所に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