ansible 2.1.0.0にて動作確認。
hosts
$ cat hosts
[app]
app01 ansible_host=xxx.xxx.xxx.xxx
[log]
log01 ansible_host=xxx.xxx.xxx.xxx
[vagrant]
localvm ansible_host=localvm ansible_user=vagrant
上記架空のhostsに於いて、log01にのみsudo yum -y update
を実行したい場合を例として記述します
shellコマンドを直接入力する方法
$ ansible log01 -b -a 'yum -y update'
log01 | SUCCESS | rc=0 >>
読み込んだプラグイン:changelog, fastestmirror, security
更新処理の設定をしています
Loading mirror speeds from cached hostfile
* base: mirrors.cug.edu.cn
* epel: mirrors.ustc.edu.cn
* extras: mirrors.cqu.edu.cn
* updates: centos.ustc.edu.cn
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package elasticsearch.noarch 0:2.3.4-1 will be 更新
---> Package elasticsearch.noarch 0:2.3.5-1 will be an update
---> Package kibana.x86_64 0:4.5.3-1 will be 更新
---> Package kibana.x86_64 0:4.5.4-1 will be an update
--> 依存性解決を終了しました。
依存性を解決しました
-b
はbecomeオプション。sudo用です。
log01をlogとすればグループに対して実行可能です。
yumモジュールを使う方法
$ ansible log01 -b -m yum -a "name=* state=latest"
log01 | SUCCESS => {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"Nothing to do here, all packages are up to date"
]
}
こんな感じになります。
私は限定的に利用しています
本番サーバーのパッケージを確認無しでアップデートするのは危ないので。
CVE情報からサーバーの脆弱性をスキャンできるツールVuls(バルス) - ログってなんぼ@新館
vulsで脆弱性チェックを行って、アップデートの必要があるhostとパッケージをちゃんと把握できている場合には積極的に使っています。楽です。