Chapter 08

プレイブックの基本

y_mrok
y_mrok
2021.10.17に更新
このチャプターの目次

説明

この章の説明はこのリンクをクリックしてください。

演習問題

Q1. 管理対象ノード takeyamachi (CentOS/7) に Nginx をインストールするプレイブックを作成する。

  • 4 つのセクションすべてを使用すること
  • 必要なパッケージ
    • epel-release ← 先にインストール
    • nginx
  • サービス名 nginx.service
  • 設定ファイル「 /etc/nginx/nginx.conf 」の編集は不要
  • 開放ポート 80 (http)
解答
hosts.yml
---
all:
  children:
    web:
      hosts:
        takeyamachi:
group_vars/all.yml
---
ansible_user: vagrant
ansible_password: vagrant
group_vars/web.yml
---
http_port: 80
host_vars/takeyamachi.yml
---
ansible_host: 192.168.111.102
install_nginx.yml
---
- name: Install Nginx
  hosts: all
  become: yes
  gather_facts: no

  vars:
    nginx_package_name: nginx
    nginx_service_name: nginx.service

  tasks:
    - name: Install the epel-release package.
      ansible.builtin.yum:
        name: epel-release
        state: present

    - name: Install the nginx package.
      ansible.builtin.yum:
        name: "{{ nginx_package_name }}"
        state: present
      notify:
        - start nginx service

    - name: Install the firewalld package.
      ansible.builtin.yum:
        name: firewalld
        state: present

    - name: Start "firewalld.service".
      ansible.builtin.systemd:
        name: firewalld.service
        enabled: yes
        state: started

  handlers:
    - name: Start "nginx.service".
      ansible.builtin.systemd:
        name: "{{ nginx_service_name }}"
        enabled: yes
        state: started
      listen:
        - start nginx service

    - name: Drill a hole for the http port.
      ansible.posix.firewalld:
        port: "{{ http_port }}/tcp"
        permanent: yes
        immediate: yes
        state: enabled
      listen:
        - start nginx service

Q2. プレイブックを実行して Nginx をインストールする。

解答
y_mrok@ctrl:~/code/chap8$ ansible-playbook -i hosts.yml install_nginx.yml 

PLAY [Install Nginx] *********************************************************************************************************************************

TASK [Install the epel-release package.] *************************************************************************************************************
changed: [takeyamachi]

TASK [Install the nginx package.] ********************************************************************************************************************
changed: [takeyamachi]

TASK [Install the firewalld package.] ****************************************************************************************************************
ok: [takeyamachi]

TASK [Start "firewalld.service".] ********************************************************************************************************************
changed: [takeyamachi]

RUNNING HANDLER [Start "nginx.service".] *************************************************************************************************************
changed: [takeyamachi]

RUNNING HANDLER [Drill a hole for the http port.] ****************************************************************************************************
changed: [takeyamachi]

PLAY RECAP *******************************************************************************************************************************************
takeyamachi                : ok=6    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

y_mrok@ctrl:~/code/chap8$ 

プレイブックを再度実行した結果です。すべてのタスクの実行結果が ok であり、冪等性が保たれています。

y_mrok@ctrl:~/code/chap8$ ansible-playbook -i hosts.yml install_nginx.yml 

PLAY [Install Nginx] *********************************************************************************************************************************

TASK [Install the epel-release package.] *************************************************************************************************************
ok: [takeyamachi]

TASK [Install the nginx package.] ********************************************************************************************************************
ok: [takeyamachi]

TASK [Install the firewalld package.] ****************************************************************************************************************
ok: [takeyamachi]

TASK [Start "firewalld.service".] ********************************************************************************************************************
ok: [takeyamachi]

PLAY RECAP *******************************************************************************************************************************************
takeyamachi                : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

y_mrok@ctrl:~/code/chap8$ 

Q3. テストページを表示する。

解答