##CentOS6での利用方法
CentOS(ホスト) -> CentOS(リモート側)
##予備知識
AnsibleはSSHでリモート側にログインしてコマンド類を叩く設計になっています。
そのため、リモート側でSSHログインができるようにしておきましょう。
(念のため、ログインするユーザと、コマンドを実行するユーザを別にすることも可能です)
インストール
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install ansible -y
実行確認
アクセス先のホストは192.168.1.20、アクセスユーザはrasennとします。
鍵認証でアクセスするなら(パスワードなしsshができれば)--ask-pass --ask-sudo-pass
は必要なく、パスワードも要求されません。
(マニュアル見ると-kで2つの代用できるように書いてありますが、sudoが必要な場合にはできませんでした。)
echo 192.168.1.20 > hosts
ansible 192.168.1.19 -i hosts -m ping -u rasenn --ask-pass --ask-sudo-pass
SSH password:
192.168.1.20 | success >> {
"changed": false,
"ping": "pong"
}
コマンドの内容としては、下記のとおりです。
ansible ホスト -i ホストリストファイル -m 実行モジュール -u ユーザ
playbookを利用した実行
playbookを利用した実行には2つのファイルが必要になります。
- ホストファイル
- playbookファイル
ホストファイル書き方
リモート側のホスト名を記載します。グループ単位で記載が可能です。
下記の例では「gluster-servers」と「hadoop-servers」の2つのグループを記載しています。
[gluster-servers]
192.168.1.20
192.168.1.21
192.168.1.22
[hadoop-servers]
192.168.1.30
192.168.1.31
192.168.1.32
playbookの書き方
yaml形式でかけます。最初のhostsはhostsファイルで記載したどのグループを対象にするかを記載しています。
後はだいたいわかると思うので省略。
playbookファイル
- hosts: gluster-servers
sudo: yes
tasks:
- name: be sure glusterfs-fuse is installed
yum: name=glusterfs-fuse state=installed
- name: be sure glusterfs is installed
yum: name=glusterfs state=installed
- name: be sure httpd is runnning and enabled
service: name=httpd state=running enabled=yes
実行コマンド
実行は下記の通り行います。
他にもいろいろオプションはありますが、シンプルに行って下記の感じです。
ansible-playbook simple-playbook.yml -i hosts -u rasenn --ask-pass --ask-sudo-pass
上記のコマンドでhosts内に書かれたgluster-serversにのサーバにyumで色々入ります
簡単な補足をするとiオプションは読み込むhostsファイルを指定し、-uはユーザを指定します。--ask-passはsshログインのパスワードをキーボード入力する、--ask-sudo-passはsudoパスワードをキーボド入力する、という指定になります。
パスワード無しSSHログインが可能な場合は--ask-passは不要ですが、立ち上げて壊すVMにいちいち鍵なしログイン設定をするのが面倒なので、2つをつけました
とりあえず、基本はこんなところでしょうか?
playbookの書き方を覚えると色々便利な気がします。
面倒なのでとりあえずここまでで。
(しかしchefと比べて気軽だなおい。。。)