いんふら女子めも

YEEE~('ω')ノ★ 現役インフラエンジニア!

Ansible試してみた。

 

f:id:akngo22:20190320225427p:plain

4月から新しいプロジェクトにアサインされ、Ansibleを使うことになる予定なので、事前にどんな感じか触ってみた。今までサーバーを手動で構築していたので、こういうツールで簡単に構築ができれば最高だなと。。。

 

始め方

自分のPCに仮想環境立てて試そうと思ったので、下記の記事を見てVirtualBox+Vagrant+CentOSでテスト環境を作成した。

qiita.com

 

ブラウザ上でお手軽に試したい場合は、Katacodaがおすすめ。

www.katacoda.com

 

ansibleインストール

コントローラに対して以下のコマンドを実行する。

# yum install -y ansible

# ansible --version  #ansibleのバージョン確認

 

インベントリ作成

インストールが完了したら、新しいディレクトリの中にインベントリ(対象サーバーの一覧)を作成する。

# mkdir ansible

# vim inventory/hosts

 

hostsインベントリの中身は、下記のようにグループ分けして記載する。

[targets]

xxx.xxx.xxx.xxx #target server IP

 

ターゲットに疎通確認

下記コマンドを実行して、ターゲットからpingが返ってくることを確認する。"SUCCESS"が表示されていればOK!

※targetsはインベントリファイルで指定したグループ名。"all"にするとインベントリに記載された全てのサーバーを選択する。

# ansible targets -i [inventory_file] -m ping

xxx.xxx.xxx.xxx | SUCCESS => {

"changed": false,

"ping": "pong"

}

ここでのpingは、icmpを使ったpingとは異なるので注意。

アドホックコマンドを使う

ansibleはplaybookに対象に行いたい処理を書き込んで実行することもできるが、ワンライナーコマンドラインからも直接処理を行うことも可能だ。

アドホリックコマンドの基本形は以下の通り。

# ansible 対象 -i [inventory_file_name] -m [module_name] -a [command]

 

例えばapacheをインストールするときは、以下のように書く。

# ansible 対象 -i [inventory_file_name] -m yum -a "name=httpd state=present"

state=present"

192.168.xxx.xxx | SUCCESS => {

"changed": false,

"msg": "",

"rc": 0,

"results": [

"httpd-2.2.15-69.el6.centos.x86_64 providing httpd is already installed"

]

}

処理が成功すれば、"SUCCESS"が表示される。

 

Playbookを使ってみる

続いて、ansibleのスクリプトであるplaybookを使ってみる。

playbookはyamlファイルなので、先頭は"---"から書く必要がある。

# vim apache_install.yml

---

- hosts: targets

  name: install apache

  become: yes

  tasks:

    - name: install apache

      yum:

          name: httpd

          state: present

    - name: start httpd

      service:

           name: httpd

           state: started

 YAMLファイルを書くときに気を付けるべき点は、TABキーで空白を作らないこと。

 

playbookはシンタックスに厳しいので、TABキーで文頭をそろえたくなるが、それで処理を実行するとエラーが発生してしまう。

There appears to be a tab character at the start of the line.

YAML does not use tabs for formatting. Tabs should be replaced with spaces.

 

ansibleは有難いことにシンタックスを確認するコマンドが存在するので、事前にチェック可能だ。

# ansible-playbook -i inventory_file install_apache.yml --syntax-check

playbook: install_apache.yml  #成功した場合このように表示される

 

今回はここまで。

参考文献

  https://amzn.to/2WceuOF

  • Ansibleをはじめるひとに 

  https://qiita.com/t_nakayama0714/items/fe55ee56d6446f67113c

  • Ansible 101 -Katacoda

      https://www.katacoda.com/irixjp/scenarios/ansible-101