インベントリ
インベントリファイルへのグループ変数定義
[servers]
host1
host2
[all:vars]
gateway=192.168.0.1
[servers:vars]
db_host=192.168.0.121
localhost
ターゲットホストでlocalhost
を指定した場合
---
- hosts: localhost
gather_facts: false
tasks:
- name: sample
ping:
このとき、インベントリファイルにlocalhost
の定義が無い場合(や、インベントリファイルを指定しない場合)は、暗黙のlocalhost
として
hosts:
localhost:
vars:
ansible_connection: local
ansible_python_interpreter: "{{ansible_playbook_python}}"
ってのが内部で用意され、この設定で接続される。よって、connection: local
として動く。
$ ansible-playbook localhost.yml -vvv
:
:
TASK [sample] *****************************************************
task path: /home/zaki/src/ansible-sample/inventory/localhost.yml:6
<127.0.0.1> ESTABLISH LOCAL CONNECTION FOR USER: zaki
:
:
こんな感じ。
インベントリにlocalhost
の設定があればそれが使われる。当然connection: local
が無ければ、設定されたコネクションプラグインが使用される(未指定ならデフォルトのssh
)
[localhost]
localhost
こんなlocalhost.ini
というインベントリファイルを指定すると、
$ ansible-playbook localhost.yml -i localhost.ini -vvv
:
:
TASK [sample] *****************************************************
task path: /home/zaki/src/ansible-sample/inventory/localhost.yml:6
<localhost> ESTABLISH SSH CONNECTION FOR USER: None
:
:
このようにssh接続となる。
ダイナミックインベントリ
EC2
[Ansible / AWS] ダイナミックインベントリを使ってEC2接続先を動的に取得してAnsible実行お試し - zaki work log
---
plugin: amazon.aws.aws_ec2
regions:
- ap-northeast-1
デフォルトでaws_ec2
グループに全EC2が所属する。
tagを使ったホストのグルーピング
---
plugin: amazon.aws.aws_ec2
regions:
- ap-northeast-1
keyed_groups:
- key: tags.Type
keyed_groups
配下にリストでkey: tags.<タグ名>
をセットすると、対象のタグの値でグループが作成される。
例えば上記の定義の場合、Type
キーがセットされているEC2のグループができる。
EC2 | Typeタグの値 |
---|---|
host1 | Type=server |
host2 | Type=client |
host3 | Type=client |
このような構成だった場合、_server
グループにhost1、_client
グループにhost2,host3がセットされる。
netbox
[NetBox / Ansible] ダイナミックインベントリを使ってNetBoxに登録されたホスト情報をターゲットノードにAnsibleを実行 - zaki work log
plugin: netbox.netbox.nb_inventory
api_endpoint: http://192.168.0.19:28080
token: 0123456789abcdef0123456789abcdef01234567