超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をインストールするファイルを作成します
- 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サンプル
- 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本関係
サンプル版
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ファイル
- モジュール
- 制限事項