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ではじめるサーバー・ネットワークの自動化(2019/04版)

2,261 views

Published on

Ansibleもくもく会 (サーバ編)2019.04 in 甲府での発表資料です
https://ansible-users.connpass.com/event/124686/

【デモ動画】
・利用例1: Webサーバーのインストールとコンテンツのデプロイ
https://www.youtube.com/watch?v=7jIv_h6xQcM

・利用例2: ネットワーク機器へのコンフィグ投入
https://www.youtube.com/watch?v=tE63YsOrX9Q

Published in: Technology
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ,Download or read Ebooks here ... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { https://urlzs.com/UABbn } ......................................................................................................................... Download Full EPUB Ebook here { https://urlzs.com/UABbn } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Ansibleではじめるサーバー・ネットワークの自動化(2019/04版)

  1. 1. 株式会社 エーピーコミュニケーションズ 横地 晃(@akira6592) 2019/04/20 Ansibleもくもく会 (サーバ編)2019.04 in 甲府 ⼊⾨セッションパート資料 【2019.04版】
  2. 2. はじめに l 構成管理ツール Ansible で、サーバーや ネットワーク機器への作業を⾃動化できます。 l 本資料では Ansible の概要と利⽤例をご紹介します ので、イメージをつかんでいただければと思います。 2 ・本資料は Ansible 2.7 を利⽤した独⾃の調査に基づくものです。
  3. 3. ⾃⼰紹介 3 名前 横地 晃 所属 株式会社エーピーコミュニケーションズ 業務 ネットワーク⾃動化関連の技術開発 @akira6592 Software Design 2018年12⽉号 Ansible 特集 https://tekunabe.hatenablog.jp https://www.slideshare.net/akira6592/ ブログ(てくなべ) 過去発表資料 https://gihyo.jp/magazine/SD/archive/2018/201812 JANOG43 Meeting in Yamanashi も
  4. 4. 内容 4 l Ansible の概要 l Ansible の構成要素(インベントリ・Playbookなど) l 利⽤例: サーバー編・ネットワーク編 l Ansible 2.8 アップデート情報 l まとめ
  5. 5. 5 Ansible の概要
  6. 6. 構成管理ツール「Ansible」の特徴 6 エージェントレス パワフル シンプル l Playbook という構成定義ファイルを利⽤ l プログラミング不要 l 多数のサーバー、クラウド、ネットワーク 機器向けモジュールを標準装備 l モジュールを⾃作することも可能 l 操作対象機器側に専⽤ソフト(エージェント)は インストール不要 Chef や puppet などと⽐較されることが多い
  7. 7. シェルスクリプトと⽐較した Ansible 1. モジュールを利⽤することで、コマンドを直接書かなくて良い • 通常のコマンドやシェルスクリプトを呼び出すこともできる 2. エラーの扱いがラク • 実⾏時にエラーがあった場合は、その場で⽌まってくれる • エラーの有無はモジュール内で検出される 3. べき等性がある • 何度実⾏しても同じ結果になる (例外モジュールあり) 4. ほかのAnsibleの機能と連携できる 7 l Ansible の使い⽅やYAMLの書き⽅を覚える必要がある Ansibleは
  8. 8. 動作環境 8 pip install ansible l Python環境上で動作(ただしWindowsにはインストール不可) l インストール⽅法例 https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html 他、yum、dnf、apt-get 等でも可 例︓ junos_config モジュールであれば、Pythonパッケージ「ncclient」もインストール必要 https://docs.ansible.com/ansible/latest/modules/junos_config_module.html ※利⽤するモジュール(後述)によっては追加インストールも必要 (モジュールのドキュメントの「Requirements」を参照) Linux: ○ Win: × Linux: ○ Win: ○ コントロール ターゲット
  9. 9. 9 Ansibleの構成要素
  10. 10. 主な構成要素 (1) インベントリ (2) モジュール (3) Playbook (4) ansible.cfg 10 (1)インベントリ (ホスト情報) (3)Playbook (構成定義)(2)モジュール (機能) (4)ansible.cfg (環境設定) host1 host2 host3 どこに なにを 対象機器 操作 利⽤ 参照
  11. 11. インベントリとは l 操作対象ホストのIPアドレス、ホスト名を指定する l 変数の定義やグループ化も可能 11 [web] 172.16.0.10 172.16.0.11 172.16.0.12 [db] 172.16.10.10 172.16.10.11 [all:vars] ansible_user=vagrant グループ名 変数定義 所属ホスト サンプル ※構成管理情報(AWS、Zabbixなど)から動的にインベントリ情報を⽣成する「ダイナミックインベントリ」という仕組みもある
  12. 12. モジュールとは l Ansibleの機能単位 l Playbook 等で利⽤するモジュール(とオプション)を指定 12 システム •Linux •Windows クラウド等 •AWS •Azure •GCP •Dcoker •OpenStack DB •PostgreSQL •MySQL •MS SQL Server 監視 •Zabbix •Sensu •nagios 通知 •Mail •Slack •syslog NW機器 •Cisco IOS •Juniper Junos •Arista EOS 【対応プラットフォーム例】 などなど、バージョンアップで増えていく
  13. 13. 13 ※ モジュールインデックス http://docs.ansible.com/ansible/modules_by_category.html 分類 モジュール名 ⽤途 サーバー系 yum yumによるパッケージのインストール、 アンインストール user ユーザーの作成、削除 win_firewall_rule Windows Firewallの設定 クラウド系 ec2 AWSのec2インスタンスの作成、終了、起 動、停⽌ azure_rm_virtualmachine Azure VM の管理 ネットワーク系 ios_config Cisco IOS 機器へのコンフィグ投⼊ junos_config Juniper Junos 機器へのコンフィグ投⼊ モジュールの例 全 2,000 モジュール以上 などなど、バージョンアップで増えていく
  14. 14. Playbookとは l YAMLというフォーマットで記述する構成定義ファイル l Playbookを⽤意せずに実⾏するad-hoc⽅式もある 14 --- - hosts: web become: yes tasks: - name: Ensure httpd package is present yum: name: httpd state: present - name: Ensure latest index.html file is present template: src: index.html.j2 dest: /var/www/html/index.html スペースの数で 情報の階層を表現 サンプル モジュール名 モジュールオプション タスク タスク
  15. 15. ansible.cfg とは l Ansibleの動作を決める設定ファイル l 例︓SSHホストキーチェックの有無、インベントリファイルのパス l ファイルが無い場合は、デフォルトの動作になる 15 [defaults] host_key_checking = False inventory = hosts サンプル
  16. 16. 16 【利⽤例1】 Webサーバーの インストールと コンテンツのデプロイ
  17. 17. 流れ 17 利⽤例1 インストール コンテンツデプロイ サービス起動 172.16.0.10 web UP
  18. 18. インベントリファイル 18 [web] 172.16.0.10 [web:vars] ansible_user=vagrant ansible_ssh_private_key_file=~/.ssh/testsv.key グループ「web」にホスト 「172.16.0.10 」が所属 グループ「web」で使⽤する変数の定義。 ログインユーザー名と秘密鍵へのパス。 利⽤例1
  19. 19. Playbook 19 --- - hosts: web become: yes tasks: - name: httpd package yum: name: httpd state: present - name: deploy index.html template: src: index.html.j2 dest: /var/www/html/index.html - name: httpd service service: name: httpd state: started enabled: yes vars: v_name: world 対象ホストを指定。インベントリファイル内で定義した グループ「web」を指定。 ログイン先で sudo する yum モジュールを利⽤ パッケージ「httpd」がインストールされた状態にする template モジュールを利⽤ テンプレートファイル「index.html.j2」を利⽤して⽣成し た内容を「/var/www/html/index.html」にデプロイ service モジュールを利⽤ サービス「httpd」を起動状態にする。 変数「v_name」の内容を「world」として定義 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 利⽤例1
  20. 20. コンテンツファイル 20 <html> <head> <title>Test Page</title> </head> <body> <h1>Hello, {{ v_name }} !</h1> </body> </html> 変数を展開する (今回はPlaybook内の変数) Ansibleでは、Jinja2 というテンプレートエンジンを利⽤でき、変数や 繰り返し、条件分岐などのロジックを埋め込むことができる。 利⽤例1
  21. 21. Playbook実⾏ 21 $ ansible-playbook -i inventory web.yml PLAY [web] ******************************************************* TASK [Gathering Facts] ********************************************** ok: [172.16.0.10] TASK [httpd package] *********************************************** changed: [172.16.0.10] TASK [deploy index.html] ******************************************** changed: [172.16.0.10] TASK [httpd service] ************************************************ changed: [172.16.0.10] PLAY RECAP ****************************************************** 172.16.0.10 : ok=4 changed=3 unreachable=0 failed=0 $ -i オプションでインベントリファイルを指定 Playbookファイル名 グループ「web」を対象とした処理の開始 基本情報(ファクト)の収集 httpd のインストール (実際にインストールされたためchangedステータス) Index.html ファイルのデプロイ (実際にデプロイしためchangedステータス) httpdのサービスの起動 (実際に開始したためchangedステータス) 実⾏結果のサマリ 利⽤例1
  22. 22. 確認 22 テンプレートファイルの 「Hello, {{ v_name }} !」と 変数定義「v_name: world」が 組み合わせでこの内容に 無事にWebサーバーが起動して内容が表⽰された 利⽤例1
  23. 23. デモ 23 利⽤例1 https://youtu.be/7jIv_h6xQcM 事前確認 → Playbook実⾏ → 事後確認
  24. 24. 24 【利⽤例2】 ネットワーク機器への コンフィグ投⼊
  25. 25. インベントリファイル 25 [web] 172.16.0.10 [web:vars] ansible_user=vagrant ansible_ssh_private_key_file=~/.ssh/testsv.key [junos] 172.16.0.1 [junos:vars] ansible_network_os=junos ansible_user=admin ansible_ssh_pass=p@ss9999 グループ「juons」にホスト 「172.16.0.1」が所属 グループ「juons」で使⽤する変数 の定義。 ネットワークOS名、ユーザー名、 パスワード 利⽤例2
  26. 26. Playbook 26 --- - hosts: junos gather_facts: no connection: netconf tasks: - name: ntp config test junos_config: lines: - set system ntp server 10.0.1.123 - name: config backup junos_command: commands: - show configuration register: result - name: save config to file copy: content: "{{ result.stdout[0] }}" dest: "show_config_{{ inventory_hostname }}.txt" 対象ホストを指定。インベントリファイル内で定義した グループ「juons」を指定。 通常のSSHではなくNETCONFで接続する junos_config モジュールを利⽤してコンフィグを投⼊ 投⼊したいコンフィグを指定 (参照先NTPサーバー 10.0.1.123を設定) junos_config モジュールを利⽤してshowコマンドを実⾏ copy モジュールを利⽤ 変数「result」内の標準出⼒の0番⽬の内容を、 ファイル名「show_config_172.16.0.1.txt」で保存する 実⾏したいshowコマンドを指定 (コンフィグファイルの表⽰) 実⾏した結果を変数「result」に代⼊ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 利⽤例2
  27. 27. Playbook実⾏ 27 $ ansible-playbook -i inventory net.yml PLAY [junos] **************************************************** TASK [ntp config test] *************************************************************** changed: [172.16.0.1] TASK [config backup] *************************************************************** ok: [172.16.0.1] TASK [save config to file] *************************************************************** changed: [172.16.0.1] PLAY RECAP *************************************************************** 172.16.0.1 : ok=3 changed=2 unreachable=0 failed=0 $ -i オプションでインベントリファイルを指定 Playbookファイル名 グループ「junos」を対象とした処理の開始 コンフィグの投⼊ (実際に投⼊されたためchangedステータス) show configuration コマンドの実⾏ コンフィグのファイル保存の実⾏ 実⾏結果のサマリ 利⽤例2
  28. 28. 確認 28 無事にコンフィグ投⼊とコンフィグのファイル保存ができた root@vsrx1> show configuration system ntp | display set set system ntp server 10.0.1.123 NW機器側 $ cat show_config_172.16.0.1.txt ## Last changed: 2018-06-20 18:20:40 UTC version 12.1X47-D15.4; system { host-name vsrx1; root-authentication { encrypted-password "$1$nq....."; ssh-rsa "ssh-rsa AAAAB3....."; } login { user vagrant { uid 2000; .... ntp { server 10.0.1.123; } } interfaces { ge-0/0/0 { ..... Ansibleホスト側 利⽤例2 https://postd.cc/8-tips-for-great-code-reviews/
  29. 29. デモ 29 利⽤例2 事前確認 → Playbook実⾏ → 事後確認 https://youtu.be/tE63YsOrX9Q
  30. 30. 30 Ansible 2.8 アップデート情報
  31. 31. Ansible 2.8 トピック (2019/05/16リリース予定) l 約1000 のモジュール追加(2019/04/19現在) l ファイヤーウォール対応の強化 l checkpoint 新対応、fortios モジュール 200以上追加 l read_csv モジュール追加 l CSVファイルをリストやディクショナリとして読み込む、地味に便利そう l https://tekunabe.hatenablog.jp/entry/2019/03/29/ansible_read_csv_intro l Retryファイルの⽣成がデフォルトで無効 l Playbook実⾏エラーホストを記録するRetryファイルの⽣成がデフォルト無効に l Interpreter Discovery l Python インタープリターの探索機能 l https://docs.ansible.com/ansible/devel/reference_appendices/interpreter_discovery.html 31 l Ansible 2.8 Porting Guide https://docs.ansible.com/ansible/2.8/porting_guides/porting_guide_2.8.html l Ansible 2.8 New module list https://awsbloglink.wordpress.com/2018/09/05/ansible-2-8-new-module-list/ l devel branch chengelogs https://github.com/ansible/ansible/tree/stable-2.8/changelogs/fragments l Ansibe 2.8 ROADMAP https://docs.ansible.com/ansible/2.8/roadmap/ROADMAP_2_8.html などなど・・
  32. 32. 32 まとめ
  33. 33. まとめ 33 使えそうかも、と感じていただけたら幸いです。 l Ansible はシンプルで始めやすいツール l エージェントレスなので、対象機器に専⽤ソフトは不要 l Linux、Windows、クラウド、NW機器などに対応 l Playbook という構成定義ファイルを作成して実⾏する のが基本的な使い⽅
  34. 34. 【付録】参考資料 34 l 公式ドキュメント l トップ l https://docs.ansible.com/ l Getting Started l https://docs.ansible.com/ansible/latest/user_guide/intro_getting_started.html l モジュールインデックス l http://docs.ansible.com/ansible/modules_by_category.html l ブラウザだけで独習できる⽇本語コース l Ansible 101 by irixjp | Katacoda l https://www.katacoda.com/irixjp/scenarios/ansible-101 l 書籍 l Ansible実践ガイド 第2版 l https://book.impress.co.jp/books/1117101100 l Ansible徹底⼊⾨ l https://www.shoeisha.co.jp/book/detail/9784798149943 おそらく公式ドキュメントの中で 各モジュールの説明ページを⾒る時間が ⼀番⻑い(何ができる︖どう使う︖)
  35. 35. 【付録】コミュニティ情報 35 https://ansible-users.connpass.com/ l Ansible Night l通常セッションとLT。年に数回全国で開催される。 l Ansible もくもく会 l ハンズオン。年に数回開催される。 l サーバー編、ネットワーク編 l 直近 5/14 東京でネットワーク編 l https://ansible-users.connpass.com/event/127681/ l Slack (ansiblejp) l 参加リンク http://bit.ly/slack-ansiblejp l 情報共有や質問など Ansible ユーザー会

×