Playbook に書くような内容を ansible コマンドで実行したい
例えばこんなのを ansible コマンドでやりたい。
some_playbook.yml
- hosts: localhost
tasks:
- file:
path: ~/example.txt
state: touch
結論
こんな風に、key=value形式をスペースで区切って渡せば良い。
$ ansible -m "モジュール名" --args "key1=value2 key2=value2"
実行例
$ ansible localhost -m "file" --args "path=~/example.txt state=touch"
localhost | SUCCESS => {
"changed": true,
"dest": "/Users/yinaura/example.txt",
"gid": 20,
"group": "staff",
"mode": "0644",
"owner": "yinaura",
"size": 4,
"state": "file",
"uid": 501
}
(注釈‥localhostであれば便宜的にインベントリ指定なしでも動く)
ここに至る経緯
最新版の ansible help でもごく簡素にしか書かれていない。
Options:
-a MODULE_ARGS, --args=MODULE_ARGS
module arguments
StackOverFlow や 公式ドキュメントを探しても例が出てこない。
コロンやセミコロンや改行で区切っても無理だ。
色々試してようやく動いた。
追記
How Ansible Works にしれっと例が書いてあったという驚き。
ansible all -m ping
ansible foo.example.com -m yum -a "name=httpd state=installed"
ansible foo.example.com -a "/usr/sbin/reboot"
環境
- ansible 2.6.0
Links
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。