AnsibleでShellScriptをリモート実行
前回までで、AnsibleのPlaybookは比較的簡単に作れることが分かった。けれども結局はYAMLファイルを独自に作りこまないといけないから、過去の資産をそのまま活かすのは難しい。ということで、一般的なShellScriptをAnsibleでリモート環境に送り込んでリモートで実行する方法を試してみる。
サンプルスクリプト
#!/bin/sh
sudo systemctl start httpd
Apacheをインストールして起動するだけのなんとも単純なスクリプト
実行
[vagrant@vm1 ~]$ ansible 192.168.33.11 -k -m script -a 'httpd.sh'
scriptモジュールで指定したスクリプトをリモートに送り込んで実行できる
192.168.33.11 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": "読み込んだプラグイン:fastestmirror\r\nLoading mirror speeds from cached hostfile\r\n * base: ftp.riken.jp\r\n * extras: ftp.riken.jp\r\n * updates: ftp.riken.jp\r\n依存性の解決をしています\r\n--> トランザクションの確認を実行しています。\r\n---> パッケージ httpd.x86_64 0:2.4.6-40.el7.centos を インストール\r\n--> 依存性解決を終了しました。\r\n\r\n依存性を解決しました\r\n\r\n================================================================================\r\n Package アーキテクチャー\r\n バージョン リポジトリー 容量\r\n================================================================================\r\nインストール中:\r\n httpd x86_64 2.4.6-40.el7.centos base 2.7 M\r\n\r\nトランザクションの要約\r\n================================================================================\r\nインストール 1 パッケージ\r\n\r\n総ダウンロード容量: 2.7 M\r\nインストール容量: 9.4 M\r\nDownloading packages:\r\n\rhttpd-2.4.6-40.el7.centos. 21% [=== ] 0.0 B/s | 593 kB --:-- ETA \r\rhttpd-2.4.6-40.el7.centos. 23% [===- ] 62 kB/s | 645 kB 00:34 ETA \r\rhttpd-2.4.6-40.el7.centos. 38% [====== ] 139 kB/s | 1.0 MB 00:12 ETA \r\rhttpd-2.4.6-40.el7.centos. 50% [======== ] 192 kB/s | 1.4 MB 00:07 ETA \r\rhttpd-2.4.6-40.el7.centos. 61% [=========- ] 243 kB/s | 1.7 MB 00:04 ETA \r\rhttpd-2.4.6-40.el7.centos. 84% [============= ] 350 kB/s | 2.3 MB 00:01 ETA \r\rhttpd-2.4.6-40.el7.centos.x86_64.rpm | 2.7 MB 00:02 \r\nRunning transaction check\r\nRunning transaction test\r\nTransaction test succeeded\r\nRunning transaction\r\n警告: RPMDB は yum 以外で変更されました。\r\n\r インストール中 : httpd-2.4.6-40.el7.cen [ ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [# ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [## ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [#### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [##### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [###### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [####### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [######## ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [######### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [########## ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [########### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [############ ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [############# ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [############## ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [############### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [################ ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [################# ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [################## ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [################### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [#################### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.cen [##################### ] 1/1\r インストール中 : httpd-2.4.6-40.el7.centos.x86_64 1/1 \r\n\r 検証中 : httpd-2.4.6-40.el7.centos.x86_64 1/1 \r\n\r\nインストール:\r\n httpd.x86_64 0:2.4.6-40.el7.centos \r\n\r\n完了しました!\r\n",
"stdout_lines": [
"読み込んだプラグイン:fastestmirror",
"Loading mirror speeds from cached hostfile",
" * base: ftp.riken.jp",
" * extras: ftp.riken.jp",
" * updates: ftp.riken.jp",
"依存性の解決をしています",
"--> トランザクションの確認を実行しています。",
"---> パッケージ httpd.x86_64 0:2.4.6-40.el7.centos を インストール",
"--> 依存性解決を終了しました。",
"",
"依存性を解決しました",
"",
"================================================================================",
" Package アーキテクチャー",
" バージョン リポジトリー 容量",
"================================================================================",
"インストール中:",
" httpd x86_64 2.4.6-40.el7.centos base 2.7 M",
"",
"トランザクションの要約",
"================================================================================",
"インストール 1 パッケージ",
"",
"総ダウンロード容量: 2.7 M",
"インストール容量: 9.4 M",
"Downloading packages:",
"",
"httpd-2.4.6-40.el7.centos. 21% [=== ] 0.0 B/s | 593 kB --:-- ETA ",
"",
"httpd-2.4.6-40.el7.centos. 23% [===- ] 62 kB/s | 645 kB 00:34 ETA ",
"",
"httpd-2.4.6-40.el7.centos. 38% [====== ] 139 kB/s | 1.0 MB 00:12 ETA ",
"",
"httpd-2.4.6-40.el7.centos. 50% [======== ] 192 kB/s | 1.4 MB 00:07 ETA ",
"",
"httpd-2.4.6-40.el7.centos. 61% [=========- ] 243 kB/s | 1.7 MB 00:04 ETA ",
"",
"httpd-2.4.6-40.el7.centos. 84% [============= ] 350 kB/s | 2.3 MB 00:01 ETA ",
"",
"httpd-2.4.6-40.el7.centos.x86_64.rpm | 2.7 MB 00:02 ",
"Running transaction check",
"Running transaction test",
"Transaction test succeeded",
"Running transaction",
"警告: RPMDB は yum 以外で変更されました。",
"",
" インストール中 : httpd-2.4.6-40.el7.cen [ ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [# ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [## ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [#### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [##### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [###### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [####### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [######## ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [######### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [########## ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [########### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [############ ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [############# ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [############## ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [############### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [################ ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [################# ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [################## ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [################### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [#################### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.cen [##################### ] 1/1",
" インストール中 : httpd-2.4.6-40.el7.centos.x86_64 1/1 ",
"",
" 検証中 : httpd-2.4.6-40.el7.centos.x86_64 1/1 ",
"",
"インストール:",
" httpd.x86_64 0:2.4.6-40.el7.centos ",
"",
"完了しました!"
]
}
うまくいった模様。yumの結果は/dev/nullに落としておけばよかった
[vagrant@vm1 ~]$ curl http://192.168.33.11
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
(略)
Apacheが立ち上がった!