狠狠撸
Submit Search
Ansible meetup201409
?
19 likes
?
8,142 views
S
shirou wakayama
Ansible meetup in Tokyo
Read less
Read more
1 of 17
Download now
Downloaded 18 times
More Related Content
Ansible meetup201409
1.
知っていると ちょっと便利なこと 若山
史郎 @r_rudi
2.
おまえだれよ? ? 若山史郎
@ ツキノワ株式会社 ? お仕事募集中です ? Twitter ID: r_rudi ? 著書 ? Ansible: 「入門Ansible」 ? Sphinx :「 Sphinxをはじめよう」
3.
今日お話すること ? 知っているとちょっと便利なこと
? いろいろなな小ネタを用意しました ? 全部で7つです。お互いに関連性はありません
4.
一つ目 roles_path 検閲済み
5.
roles_path (1/7) ?
roleが散らばって困っていませんか ? リポジトリが違う場合など ? ansible.cfgに “roles_path” を設定できます roles_path=/opt/roles:../roles ! ? “:”で区切って複数個指定できます ? “..” など相対パスも使えます
6.
roleの検索順序 (1/7) ?
roleの検索順序 1. 自分のディレクトリの roles 以下 2. 自分のディレクトリ 3. roles_pathを前から探していく ./deploy.yml /inventory /roles/hoge/tasks /hoge/tasks/ ← こっちが先
7.
whenの複数条件 (2/7) when:
ansible_os_family == "RedHat" ! and mode == "production" ? 長すぎ。こう書けます when: - ansible_os_family == "RedHat" - mode == "production"
8.
shellで環境変数 (3/7) ?
“environment” ? ちなみにどのモジュールでも使えます ! ! - shell: something.sh environment: PATH: /opt/bin ? sourceは使えない。 “.” かbashで実行 - shell: source envfile && something.sh stderr: /bin/sh: 1: source: not found - shell: . envfile && something.sh - shell: source envfile && something.sh executable=/bin/bash
9.
数字として比較 (4/7) ?
普通に書くと、文字列での比較となってしまう - shell: cat /var/log/something.log | wc -l register: logline - fail: msg="too long" when: logline.stdout > 300 - shell: cat /var/log/something.log | wc -l register: logline - fail: msg="too long" when: logline.stdout | int > 300
10.
バージョンを比較 (4/7) ?
“3.0.16” などのバージョンを比較できます vars: version: 3.0.16 tasks: - debug: msg="its old!" when: version | version_compare(‘3.0.20’, '<=')
11.
正規表現で比較 (4/7) vars:
url: "http://example.com/users/foo/resources/bar" ! tasks: - shell: "msg='パターン 1にマッチ (完全一致)’" when: url | match("http://example.com/users/.*/ resources/.*") ! - debug: "msg='パターン 2にマッチ (部分一致)’" when: url | search("/users/.*/resources/.*")
12.
cronモジュール (5/7) ?
crontabの書き方を忘れたりしませんか? ? minute, hour などで指定できます cron: name=“check” minute=30 hour="5,2" job="ls -alh > /dev/null" ! ? @reboot なども指定できます cron: name="reboot" special_time=reboot job="ls -lah" ! ? AnsibleのDSLを覚えておけばいい
13.
local_fact (6/7) ?
/etc/ansible/facts.d/hosts.fact ? 対象ホストにファイルを置くとfactとなる [group] stage=! development role=webserver ! ? 使い方 - debug: msg={{ ansible_local.hosts.group.role }}
14.
local_fact (6/7) ?
JSONでも書けます { "group": { ! “role”:"webserver", “stage”: “development” } } ! ? 実行権限をつけると、動的に生成できます #!/bin/sh cat <<EOF {"group": { “role”:"webserver", “stage”: “development” } } EOF
15.
local_path (6/7) ?
/etc/ansible/facts.d/じゃない場所を使いたい! ? setupモジュールを使う tasks: - setup: fact_path="/home/shirou/tmp/ansible" - debug: msg={{ ansible_local.hosts.group.role }}
16.
chatops (7/7) ?
slack + hubot
17.
まとめ 1. role_path
2. when 3. shell 4. 数字として比較 5. cron 6. local_fact 7. hubot + slack ? 小ネタを用意しました ? 全部ドキュメントに書い てあります ? hubotは後でgistを ? 今後も便利な機能が増え ていくので乞うご期待
Download