Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Red Hat Dojo #01 Ansibleを使ってWebサーバーを構築してみよう

Mats
October 26, 2020

Red Hat Dojo #01 Ansibleを使ってWebサーバーを構築してみよう

エンジニアに限らずシステム構築や検討に関わる方でこれからAnsibleを使ってみたい方が分かるようにAnsibleの基本動作と各コンポーネントをご説明致します。
基本動作の中で、AgentlessなのにAnsibleコントロールノードがどうやってAnsibleターゲットノードを制御しているのか、
またPlaybookのSimpleな記載方法を通じて、
様々な機器へPowerfulに対応できるモジュールを備えていることをご説明致します。

Mats

October 26, 2020
Tweet

More Decks by Mats

Other Decks in Education

Transcript

  1. 1. ハンズオン準備 環境準備 ハンズオン環境へログイン 2. Red Hat Ansible Automation Ansible

    の紹介 3. ハンズオン Ad-hocコマンドで疎通確認 RHEL8にApacheでWebサーバーを構築 Windows Server 2016にIISでWebサーバーを構築 コンテンツ
  2. 環境準備 1.ハンズオン準備 Mac参加者向け Windows 仮想マシンにリモートデスクトップ接続します。 そのため、「App Store」から「Microsoft Remote Desktop」をインストール Windows参加者向け

    RHEL8 マシンにssh 接続します。 Windows10の PowerShell では ssh コマンドを利⽤することが可能です。 お使いのマシンの PowerShell に ssh 機能が備わっていなければ、「tera term」をご利⽤くださ い。
  3. 2.Red Hat Ansible Automation セキュリティー 仮想化基盤 ネットワーク 得意とする領域 夜間・休⽇作業 属⼈化排除

    ⼯数の無駄削減 セキュリティー向上 品質向上 働き⽅改⾰ リードタイム短縮 ⾃動化2.0 Ansible Use Case︓ https://www.ansible.com/use-case
  4. 2.Red Hat Ansible Automation • 様々なIT機器やアプ リケーションと⽤法 を⾃動化 1PXFSGVM •

    YAML形式の Playbookで短く簡 潔に⾃動化 4JNQMF • 管理対象への特別な 設定は不要 "HFOUMFTT ͜Ε·ͰͷࣗಈԽ੡඼ͱ͸ҧ͏"OTJCMFͷಛ௃
  5. 本⽇の構成 3.ハンズオン ⼿元のPC (Mac/Windows) RHEL8 AA.BB.CC.DD EE.FF.GG.HH Windows Server 2016

    KK.LL.MM.NN OO.PP.QQ.RR Mac︓ssh アクセス Win︓RDPアクセス ssh 経由で Playbook実⾏ WinRM経由で Playbook実⾏ ① ② ② Apacheで Webサイト構築 IISで Webサイト構築 ③ ③ RHEL8 WW.XX.YY.ZZ SS.TT.UU.VV Yマシン名の下に記載してある⽂字列は 中段︓プライベートIPアドレス 下段︔パブリックIPアドレス確認 コントロールノード ターゲットノード ターゲットノード 済
  6. コントロールノード(RHEL)から各ターゲットノードへ疎通確認 TCP/IPレベルでの疎通を確認します。 3.ハンズオン $ ping [rhDojoRhelCon***のプライベートIPアドレス] PING AA.BB.CC.DD (EE.FF.GG.HH) 56(84)

    bytes of data. 64 bytes from AA.BB.CC.DD: icmp_seq=1 ttl=64 time=1.05 ms 64 bytes from AA.BB.CC.DD : icmp_seq=2 ttl=64 time=0.703 ms 64 bytes from AA.BB.CC.DD : icmp_seq=3 ttl=64 time=0.526 ms $ ping [rhDojoWinTar***のプライベートIPアドレス] PING KK.LL.MM.NN (OO.PP.QQ.RR) 56(84) bytes of data. 64 bytes from KK.LL.MM.NN : icmp_seq=1 ttl=64 time=1.05 ms 64 bytes from KK.LL.MM.NN : icmp_seq=2 ttl=64 time=0.703 ms 64 bytes from KK.LL.MM.NN : icmp_seq=3 ttl=64 time=0.526 ms Ctrl-c Ctrl-c コントロールノード
  7. ターゲットノード(RHEL)に”ansible”ユーザー追加 Ansible 実⾏ユーザーとして”ansible”ユーザーを作成し、sudoユーザー として追加します。 3.ハンズオン # useradd ansible # passwd

    ansible ①“ansible”ユーザー追加 ②“ansible”ユーザーのパスワード設定 ターゲットノード # visudo ③sudoユーザーとして“ansible”ユーザーを追加 ansible ALL=(ALL) ALL 101⾏⽬に以下を追加
  8. コントロールノード(RHEL)から各ターゲットノードへAd­hocコマン ド疎通確認 ※ターゲットノードがLinux(RHEL)の場合 SSH公開鍵を⽣成し、ターゲットノード(RHEL)へ登録します。 3.ハンズオン $ssh-keygen -t rsa Generating public/private

    rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): /home/ansible/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ・ ・ +---[RSA 3072]----+ | E | | ..| ssh-copy-id -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa.pub localhost ⾃マシン(localhost)への鍵登録 相⼿マシン(AA.BB.CC.DD)への鍵登録 Enter Enter Enter y ssh-copy-id -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa.pub AA.BB.CC.DD コントロールノード
  9. コントロールノード(RHEL)から各ターゲットノードへAd­hocコマン ド疎通確認 Ansibleの特殊コマンドを使って疎通を確認します。 3.ハンズオン Viやテキストエディタ等を使って ~/sample/invent.ini を編集 [control] localhost [rhelTarget]

    AA.BB.CC.DD [winTarget] KK.LL.MM.NN [winTarget:vars] ansible_user=ansible ansible_password=qwer!234 ansible_port=5986 ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ターゲットノードの プライベートIPアドレス Viやテキストエディタ等を使って ~/sample/winInvent.ini を編集 [all:vars] ansible_ssh_user=ansible ansible_ssh_pass="qwer!234" ansible_ssh_port=5986 ansible_connection=winrm ansible_winrm_server_cert_validation=ignore [windows] winTarget ansible_host=KK.LL.MM.NN [control] rhelControl ansible_host=WW.XX.YY.ZZ ターゲットノードの プライベートIPアドレス コントロールノードの プライベートIPアドレス コントロールノード
  10. コントロールノード(RHEL)からAd-hocコマンドによるターゲットノー ド(RHEL,Windows Server)疎通確認 3.ハンズオン $ ansible rhelTarget -i invent.ini -m

    ping AA.BB.CC.DD | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" } $ ansible winTarget -i invent.ini -m win_ping KK.LL.MM.NN | SUCCESS => { "changed": false, "ping": "pong" } コントロールノード
  11. RHEL8にApacheでWebサーバーを構築するYamlファイル確認 (apache.yml) 実施していること ・apacheの最新版をインストール ・apache起動 ・ファイアウォール起動 ・TCP80番ポート通信可 etc 3.ハンズオン ---

    - hosts: rhelTarget remote_user: ansible become: yes tasks: - name: install apache yum: name: httpd state: latest # - name: latest index. html file is present # copy: src=./files/rhDojoSample01.html dest=/var/www/html/index.html # - name: latest index. html file is present # copy: src=./files/ryoma.JPG dest=/var/www/html/ - name: httpd is started service: name: httpd state: started - name: start firewalld command: systemctl start firewalld.service - name: open 80 command: firewall-cmd --zone=public --add-service=http --permanent - name: restart firewall command: firewall-cmd --reload コントロールノード
  12. Windows Server 2016にIISでWebサーバーを構築するYamlファイ ル確認(iis.yaml) 実施していること ・IISのインストール済ならそのまま、 未インストールならば最新版をインストール ・再起動 ・TCP80番ポート通信可 etc

    3.ハンズオン --- - hosts: rhelTarget remote_user: ansible become: yes tasks: - name: install apache yum: name: httpd state: latest # - name: latest index. html file is present # copy: src=./files/rhDojoSample01.html dest=/var/www/html/index.html # - name: latest index. html file is present # copy: src=./files/ryoma.JPG dest=/var/www/html/ - name: httpd is started service: name: httpd state: started - name: start firewalld command: systemctl start firewalld.service - name: open 80 command: firewall-cmd --zone=public --add-service=http --permanent - name: restart firewall command: firewall-cmd --reload コントロールノード
  13. ターゲットノード(RHEL8)側でPlaybook実⾏ 3.ハンズオン $ ansible-playbook -i invent.ini apache.yml PLAY [Initialize OS

    setting for Windows Servers] ******************************** ・ ・ ・ TASK [Install IIS] ******************************************************************* changed: [winTarget] TASK [Reboot] ********************************************************************* changed: [winTarget] PLAY RECAP ********************************************************************* AA.BB.CC.DD : ok=9 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 ansible-playbook -i invent.ini apache.yml 成功︕ コントロールノード
  14. ターゲットノード(Windows Server 2016)側でPlaybook実⾏ 3.ハンズオン $ ansible-playbook -i winInvent.ini iis.yml PLAY

    [Initialize OS setting for Windows Servers] ********************************* ・ ・ ・ TASK [Install IIS] ******************************************************************* changed: [winTarget] TASK [Reboot] ********************************************************************* changed: [winTarget] PLAY RECAP *********************************************************************** winTarget : ok=9 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 成功︕ ansible-playbook -i winInvent.ini iis.yml コントロールノード
  15. • Playbook実⾏後・・・ 3.ハンズオン OO.PP.QQ.RR ターゲットノード (Windows Server 2016) 簡単にIISサーバを構築す ることができました。

    ターゲットノード (RHEL8) AA.BB.CC.DD 簡単にApacheサーバを構 築することができました。 ⾃⾝のマシン
  16. Playbook修正+Playbook実⾏ (RHEL8) apache.yaml 78,79,81,82⾏⽬のコメントアウトを外し、Playbook実⾏ 3.ハンズオン $ ansible-playbook -i winInvent.ini iis.yml

    PLAY [Initialize OS setting for Windows Servers] ********************************* ・ ・ ・ TASK [Install IIS] ******************************************************************* changed: [winTarget] TASK [Reboot] ********************************************************************* changed: [winTarget] PLAY RECAP *********************************************************************** winTarget : ok=9 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 成功︕ ansible-playbook -i winInvent.ini iis.yml コントロールノード
  17. Playbook修正+Playbook実⾏ (Windows Server 2016) iis.yaml 78,79,81,82⾏⽬のコメントアウトを外し、Playbook実⾏ 3.ハンズオン $ ansible-playbook -i

    winInvent.ini iis.yml PLAY [Initialize OS setting for Windows Servers] ********************************* ・ ・ ・ TASK [Install IIS] ******************************************************************* changed: [winTarget] TASK [Reboot] ********************************************************************* changed: [winTarget] PLAY RECAP *********************************************************************** winTarget : ok=9 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 成功︕ ansible-playbook -i winInvent.ini iis.yml コントロールノード
  18. 次回11/9(⽉)に 「 Red Hat Dojo #2 : Ansible Tower/AWX を体験してみよう」

    を予定しております。 この中ではAnsible Tower/AWXの操作や活⽤⽅法を解説する 予定です。 よろしければご参加をお願い致します。 予告
  19. IBM Developer Dojoは開発者の⽅を対象に、IBM Cloudを主とした技術情報をお伝えする⽬的で開催して います。講師や運営スタッフにより、開催毎に最適と判断した内容でお届けしています。 現在、ハンズオンを伴う講義はお客様の費⽤負担がない環境と⼿順でご案内しています。講義終了後、不要 になりました制作物はお客様ご⾃⾝で削除をお願いいたします。クレジットカードの登録が伴わない場合、 費⽤は⼀切発⽣致しませんが、ご登録いただいたお客様はご注意ください。 講師陣はみなさまの利⽤状況を個別に確認することはできません。 ご理解とご協⼒をお願いいたします。

    利⽤したサービスの削除⽅法については講義の中でご案内します。 ご不明な点がございましたら、当⽇確認をお願いいたします。 講義終了後、 IBM Developer Dojoに関するお問い合わせは「Slack」にお願いします。それ以外のIBM Cloudのお問い合わせにつきましては、弊社サポートセンターまで、次のいづれかの⽅法でお問い合わせく ださい。 IBM Cloudダッシュボードの「サポート」メニューから「Case」を作成し、英語でご記⼊ください IBM Cloudサポートセンター「相談する」ボタンからチャットまたは電話でご連絡ください https://www.ibm.com/jp-ja/cloud/support ご参加ありがとうございました。 免責事項
  20. EOF