Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ansible 20181031

223 views

Published on

ansible

Published in: Software
  • Be the first to comment

Ansible 20181031

  1. 1. 第1回 Ansible ハンズオン とりあえずPlaybookを動かしてみよう
  2. 2. Ansibleとは 構成管理ツール 自動化ツール PythonとSSHで動く Agentレス Redhatに買収された PlaybookはYAMLで書かれる
  3. 3. YAMLとは YAML Ain't a Markup Language YAMLはマークアップ言語では無いの意 マークアップ言語とはタグなどで属性を表現する記法 一般的にこのようなもの <body> <h1>HTTPとWebサーバ</h1> <h2>学習のポイント</h2> <p>この章では~</p> <a href=“setsumei.html”>詳細説明</a> </body> で、このようなタグを使わない、というもの 覚えるべきは3つのみ
  4. 4. YAMLとは ①ハッシュ キーとバリューで表現する KEY: VALUE となる。コロンのあとに半角スペースを忘れずに 一般的なプログラム的には KEY=VALUE と一緒 KEYが変数でVALUEが中に入れる値になる
  5. 5. YAMLとは ②リスト 配列みたいなことができる KEY: - A - B - C でKEY=[A,B,C]みたいなことができる 具体的には KEY[1]=A,KEY[2]=B,KEY[3]=Cという感じ
  6. 6. YAMLとは ③ネスト ネストをつけると階層構造にできる KEY: KEY1: KEY2: A でKEY[KEY1[KEY2]]=A と一緒 ネストは半角スペース2つでつけること
  7. 7. Playbookの構文 - hosts: localhost become: yes vars: fn: hoge tasks: - name: テスト用実行内容 shell: echo “hoge” > /var/tmp/{{ fn }} 実行 部分 ・ ・rootユーザに なってから実行する ・ ・対象ホスト 「test.yml」 変数 部分
  8. 8. 実行の仕方 ansible-playbook test.yml 構文 # ansible-playbook [playbook名]
  9. 9. 実行結果 $ ansible-playbook test.yml [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' PLAY [localhost] ****************************************************************** TASK [Gathering Facts] ************************************************************ ok: [localhost] TASK [テスト用実行内容] ******************************************************************* changed: [localhost] PLAY RECAP ************************************************************************ localhost : ok=2 changed=1 unreachable=0 failed=0
  10. 10. モジュールとは コマンドのようなもの Playbook実行部の命令 Pythonで書かれている 日々増えている 自分で作成できる 冪等性がある
  11. 11. Moduleの種類 https://docs.ansible.com/ansible/latest/modules/modules_by_category.html 千数種類存在している クラウド用・ネットワーク用・システム用など用途別に分かれている 日本語の一覧はこちら http://pj-doaa.hatenablog.com/entry/2017/08/01/122859
  12. 12. モジュールの書き方 tasks: - name: ユーザ作成 user: name: james shell: /bin/bash state: present ・ ・モジュール名を指定 ・ ・モジュール名の後はスペース 2つで絡むをずらして引数を渡す
  13. 13. 条件分岐の書き方 tasks: - name: コマンド実行 command: ls /var/tmp/hoge register: result ignore_errors: True - name: 失敗時実行 command: echo false when: result is failed - name: 成功時実行 command: echo success when: result is succeeded ・ ・実行結果を取得 ・ ・エラーになっても処理を継続 ・ ・結果がエラーの場合実行 ・ ・結果が正常の場合実行
  14. 14. 繰り返しの書き方 tasks: - name: ディレクトリの作成 file: path=/root/{{ item }} state=directory with_items: - test1 - test2 - test3 ・ ・itemに配列が入り、処理を繰り返す ・ ・ ・繰り返す値を記載 先頭のハイフンは繰り返し (配列)を意味する
  15. 15. アトリビュートとは 先ほど書いたwhenやwith_items 実はtasksやnameもアトリビュート 一覧は下記 https://qiita.com/yunano/items/8494e785390360011a88
  16. 16. 課題1 自分の名前1のユーザを作成する # cat /etc/passwd | grep [ユーザ名] 上記コマンドで動作確認を行う
  17. 17. 課題2 自分の名前1のユーザ作る ユーザのパスワードを設定する # su - [ユーザ名] 上記コマンドで動作確認を行う
  18. 18. 課題3 自分の名前1のユーザ作る ユーザのパスワードを設定する ユーザ作成が成功した場合には作業ディレクトリ にuser_listというファイルを作成し、先ほど 作ったユーザ名を記載する
  19. 19. 課題4 自分の名前1のユーザ作る ユーザのパスワードを設定する ユーザ作成が成功した場合には作業ディレクトリ にuser_listというファイルを作成し、先ほど 作ったユーザ名を記載する user_listにユーザ名が記載されている場合は ユーザを削除する
  20. 20. 課題5 自分の名前1のユーザ作る ユーザのパスワードを設定する ユーザ作成が成功した場合には作業ディレクトリ にuser_listというファイルを作成し、先ほど 作ったユーザ名を記載する user_listにユーザ名が記載されている場合は ユーザを削除する 上の処理を自分の名前+項番(1~10)で10回繰り 返す
  21. 21. ex1 自分のworkフォルダ内にファイルを作成して、 その中に/home/ec2-user配下のファイルリスト を記述する。
  22. 22. ex2 自分のworkフォルダ内にファイルを作成して、 その中に/home/ec2-user配下のファイルリスト を記述する。 自分のworkフォルダ内にファイルを作成する
  23. 23. ex3 自分のworkフォルダ内にファイルを作成して、 その中に/home/ec2-user配下のファイルリスト を記述する。 自分のworkフォルダ内にファイルを作成する 現時点の/home/ec2-user配下のファイルリスト と最初に作成したファイルの内容を比較する。
  24. 24. ex4 自分のworkフォルダ内にファイルを作成して、 その中に/home/ec2-user配下のファイルリスト を記述する。 自分のworkフォルダ内にファイルを作成する 現時点の/home/ec2-user配下のファイルリスト と最初に作成したファイルの内容を比較する。 差分を検知した場合はメッセージとして検知した 内容を出力する。

×