LoginSignup
97

More than 5 years have passed since last update.

超ansible入門 / ansible for beginer

Last updated at Posted at 2016-02-16

超ansible入門 / ansible for beginer

ansibleの概要と、本項目の目的

ansibleはサーバー構成自動化ツールです。(デプロイ利用も)
今回はansibleへの導入と、以降の展開に対しての示唆を目的として構成しています。


INDEX

  • 1 公式リンク
  • 2 とりあえず触ってみるためのHOW TO ~ httpdをインストール
  • 3 さらなる理解のためのさわり
  • 4 TOPIC
  • 5 ansible commands
  • 6 どの程度理解してるかを図るために・・・

1 公式リンク

公式サイト
ドキュメント


2 とりあえず触ってみるためのHOW TO ~ httpdをインストール

簡単なansibleの使い方をhttpdをインストールする事で
確認してみます。

2-1 [ 前提条件として ]

step 1

(A) クライアント(centos6)側には ansible + sshクライアント
(B) ホストサーバー側(centos6)には python + sshサーバー
が揃ってればOK

-ansible インストール(A)
yum install -y epel-release
yum install -y ansible

-openssh-server (B)

-openssh-client (A)

-python + 必要に応じてのモジュールの追加(yum install MySQL-pythonでmysqlドライバーのインストとか)

一応今回は両方ともdocker hubからオフィシャルのcentosイメージで、ローカルに起動しています。 
host側のip,portは 192.168.99.100:32786 になってます。

2-2 ansible実行

/etc/ansible内で作業します。

dockerクライアントとの共有をしているフォルダ(ここではhome)内で実行でも構わないと言いたいが、docker経由だと
ファイルの権限がftpでrootに変えたりできないので素直にetc/ansible内で
やる方がいいみたい。 (cp ../../home/***.yml /)
*ansibleはhostsの権限次第でエラーになるので以下を参照
http://www.lnc.jp/2015/03/23/2317.html

step 2-2-1 /etc/ansible/hostsファイルを編集

cd /etc/ansible/
vi hosts

[test-servers]
192.168.99.100:32786

ip,portは環境に合わせて。

step 2-2-2 windows側ymlファイルを作成(そのままcentos側でやっても問題ないですが)

とりあえずhttpをインストールするファイルを作成します

simple.yml
- hosts: test-server
  tasks:
    - name: install httpd
      yum: name=httpd disable_gpg_check=no state=installed

※ yum install -y httpdの -yオプションの代わりに disable_gpg_check=no

※ yml形式なのでインデントには注意しましょう。

※そのまま /etc/ansible/ の中で作る場合は
vi simple.yml ではじめてください。

step 3 ansibleの実行

step 3-1 同期フォルダのhomeにあるymlファイルをコピー
cp ../../home/simple-playbook.yml /etc/ansible/

step 3-2 ansibleの実行
ansible-playbook -i hosts simple.yml --ask-pass

※ --ask-pass はホスト側に鍵登録されてる場合は必要ありません。

3 さらなる理解のためのさわり

★おススメ
- Ansible 初心者なら、まずは Ansible Galaxy から始めてみよう

ansibleはymlファイル単体で動きますが、ベストプラクティスというおススメの構成があって

- inventory(hostsファイル)
- ansible-playbook(ymlファイル)
- Role
- handler
・・・
などの理解、利用をすると、サーバー構成を自動化したり、大量のサーバーに処理する助けとなります。

4 TOPIC

TOPIC INDEX

  • 4-1 やってはいけない・・・・? shellでごり押し
  • 4-2 centos6に php5.5をインストールするplaybookサンプル
  • 4-3 Playbook 実行時に任意の値を指定する
  • 4-4 ansibleでホスト側にユーザー登録、鍵登録
  • 4-5 ansiblenのツボ
  • 4-6 CentOSにRedmineを自動インストールするためのAnsibleプレイブック

4-1 やってはいけない・・・・? shellでごり押し

なにげに
name: shellでごり押し gitインストール
shell: yum install -y git

などshellでごり押しで書けます。

4-2 centos6に php5.5をインストールするplaybookサンプル

php55inst.yml

- hosts: test-server
  tasks:
    - name: remove php
      yum: name=php state=removed
    - name: set epel repository
      shell: rpm -Uvh --force http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    - name: set remi repository
      shell: rpm -Uvh --force http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

    - name: install php5
      yum: name=php disable_gpg_check=no enablerepo=remi-php55 state=installed

centos6の場合、そのまま yum install -y php をするとphp5.3あたりがインストされます。
5.5以上をインストするために rpmを追加しています。

4-3 Playbook 実行時に任意の値を指定する

! Point
cliオプションで --extra-vars "var1=***" を設定する事で可能に

さらに vars_promptという物を設定しておくと対話方式で引数を設定する事が可能に
var_prompt:
 - name : **変数名になる{{変数名}}で使用できる*
   prompt: "質問を入れる"
   default: デフォルト値も設定可能

4-4 ansibleでホスト側にユーザー登録、鍵登録

4-5 ansiblenのツボ

英語でつらい場合の補助に

4-6 CentOSにRedmineを自動インストールするためのAnsibleプレイブック

日本語はいいな


5 ansible commands

ansibleのコマンド(モジュール)の全リストです。
All Modules

モジュールをpythonなどで自作する事もできるそうなので、ここに載っていない便利なものも世の中に出回ってるはずです。


6 どの程度理解してるかを図るために・・・

ansible入門pdf本関係


入門ansible

サンプル版
http://tdoc.info/ansible-book/ansible-sample.pdf

英語だけでこころもとない場合はやはり書籍で・・・

■ 目次

1章. はじめに

- Ansibleの特徴

- Ansibleはシンプル

- ChefやPuppetとの違い

- Ansibleは "Better Shell Script"

2章. Ansibleを使ってみよう

- インストール

- inventoryファイル

- モジュール (module)

3章. playbookを作ってみよう

- YAMLの文法

- playbookを書いてみる

- playbookの解説

- task

- handler

- よく使うモジュール

4章. 複雑なplaybookを作ってみよう

- 繰り返し -- with_items

- 出力を保存してあとで使う -- register

- 条件付き実行 -- when

- 成功するまで繰り返す -- until

- 外部情報の参照 -- lookup

- 変数を処理する -- filter

- キーボードから入力する -- vars_prompt

- 管理ホストで実行する -- local_action

- 実行するモジュールを変数で変更する -- action

- 環境変数を設定する - environment

- 失敗しても無視する - ignore_errors

- 非同期でtaskを実行する -- async

5章. 大規模なplaybookを構築してみよう

- 他のplaybookを読み込む -- include

- 推奨ディレクトリ構成 -- ベストプラクティス

- まとめて再利用 -- role

- 並列実行 -- fork

- 順々に実行する -- serial

- AWS EC2との連携

- ホストのリストを動的に作成 -- dynamic inventory

6章. コマンドラインオプションを使ってみよう

- ssh認証

- 対象ホストを制限する -- limit

- 実行するtaskを制限する -- tag

- dry-run実行 -- check

- taskを確認しながら実行 -- step

- 差分表示 -- diff

7章. 変数ファイルの暗号化 -- ansible-vault

- ansible-vaultの使い方

- 暗号化されたファイルの使い方

8章. 公開されているroleを使ってみよう -- Ansible Galaxy

- Ansible Galaxyとは

- roleの検索方法

- roleを手に入れる

- roleの使い方

9章. よくあるご質問

- 接続できない

- ControlPath too longというエラーが出る

- 実行しても途中で止まる

- inventory ファイルがなくても接続したい

- 一つのplaybookが複雑になってしまった

- python not foundというエラーが出る

- Windowsで使いたい

- ansible-playbookに変な絵が表示される

- ansibleが収集する変数を知りたい

- invalid type type 'list'と出る

- 変数を使った時に "Syntax Error" が出る

- "---" はどういう意味?

- Ansibleという名前の由来は?

10章. おわりに

付録: モジュールを自作する

- モジュールの動作

- モジュールの形式

- モジュールのサンプル

- Pythonでの便利関数

- モジュールのデバッグ

付録: Ansible plugin

- pluginの種類

- lookup plugin

- filter plugin

- callback plugin

- action plugin

- connection type plugin

- vars plugin

付録: ansible configファイル

- defaultセクション

- paramiko セクション

- ssh_connection セクション

- accelerateセクション

付録: Windows対応

- 前提環境

- 準備

- inventoryファイル

- モジュール

- 制限事項

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
97