Ansible playbook httpd설치 개요
Ansible Playbook
[devops@work-vm devops-lab]$ cat web-httpd-install.yml
---
- hosts: web
  vars:
    http_port: 80
    max_clients: 200
  become: true
  tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest
  - name: write the apache config file
    template:
      src: /home/devops/devops-lab/httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running
    service:
      name: httpd
      state: started
  handlers:
    - name: restart apache
      service:
        name: httpd
        state: restarted
Ansible Jinja2 Template
[devops@work-vm devops-lab]$ cat httpd.conf.j2
ServerRoot "/etc/httpd"
Listen {{http_port}}
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
<Directory />
    AllowOverride none
    Require all denied
</Directory>
DocumentRoot "/var/www/html"
<Directory "/var/www">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>
<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule>
<Files ".ht*">
    Require all denied
</Files>
ErrorLog "logs/error_log"
LogLevel warn
<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
    CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
<IfModule mime_module>
    TypesConfig /etc/mime.types
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
    MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf
Ansible Playbook 실행
[devops@work-vm devops-lab]$ ansible-playbook web-httpd-install.yml
PLAY [web] **************************************************************************************************************************************************** TASK [Gathering Facts] **************************************************************************************************************************************** ok: [web01-vm] ok: [web03-vm] ok: [web02-vm] TASK [ensure apache is at the latest version] ***************************************************************************************************************** ok: [web01-vm] ok: [web02-vm] ok: [web03-vm] TASK [write the apache config file] *************************************************************************************************************************** changed: [web02-vm] changed: [web01-vm] changed: [web03-vm] TASK [ensure apache is running] ******************************************************************************************************************************* changed: [web02-vm] changed: [web03-vm] changed: [web01-vm] RUNNING HANDLER [restart apache] ****************************************************************************************************************************** changed: [web01-vm] changed: [web02-vm] changed: [web03-vm] PLAY RECAP **************************************************************************************************************************************************** web01-vm : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web02-vm : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web03-vm : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Ansible Playbook 결과 검증
[devops@work-vm devops-lab]$ ansible web -m shell -a "netstat -nltp | grep httpd"
web01-vm | CHANGED | rc=0 >> tcp6 0 0 :::80 :::* LISTEN 66600/httpd web02-vm | CHANGED | rc=0 >> tcp6 0 0 :::80 :::* LISTEN 67703/httpd web03-vm | CHANGED | rc=0 >> tcp6 0 0 :::80 :::* LISTEN 66306/httpd
httpd 설정 변경 및 검증
[devops@work-vm devops-lab]$ cat web-httpd-install.yml
변경한 설정정보
vars:
    http_port: 81
web-httpd-install.yml
---
- hosts: web
  vars:
    http_port: 81
  tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest
  - name: write the apache config file
    template:
      src: /home/devops/devops-lab/httpd.conf.j2
      dest: /etc/httpd/conf/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running
    service:
      name: httpd
      state: started
  handlers:
    - name: restart apache
      service:
        name: httpd
        state: restarted
[devops@work-vm devops-lab]$ ansible-playbook web-httpd-install.yml
PLAY [web] **************************************************************************************************************************************************** TASK [Gathering Facts] **************************************************************************************************************************************** ok: [web01-vm] ok: [web02-vm] ok: [web03-vm] TASK [ensure apache is at the latest version] ***************************************************************************************************************** ok: [web01-vm] ok: [web03-vm] ok: [web02-vm] TASK [write the apache config file] *************************************************************************************************************************** changed: [web01-vm] changed: [web03-vm] changed: [web02-vm] TASK [ensure apache is running] ******************************************************************************************************************************* ok: [web01-vm] ok: [web02-vm] ok: [web03-vm] RUNNING HANDLER [restart apache] ****************************************************************************************************************************** changed: [web02-vm] changed: [web01-vm] changed: [web03-vm] PLAY RECAP **************************************************************************************************************************************************** web01-vm : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web02-vm : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 web03-vm : ok=5 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [devops@work-vm devops-lab]$ ansible web -m shell -a "netstat -nltp | grep httpd" web01-vm | CHANGED | rc=0 >> tcp6 0 0 :::81 :::* LISTEN 67642/httpd web02-vm | CHANGED | rc=0 >> tcp6 0 0 :::81 :::* LISTEN 68748/httpd web03-vm | CHANGED | rc=0 >> tcp6 0 0 :::81 :::* LISTEN 67347/httpd