컬쥐네 다락방

Ansible | Playbook 본문

클라우드/Ansible

Ansible | Playbook

코딩하는 갱얼쥐 2022. 4. 18. 16:55

Ansible에서 Ad-hoc 명령을 통해 서버에 직접적으로 접속하지 않고도 여러 서버들을 관리할 수 있었다.
이런 방식을 yaml 파일을 통해 관리하고 정리하고 한번에 실행하는 방식이 Ansible의 Playbook이다.

  • 야구 경기가 시작할 때 외치는 Playball에서 따왔다는 이야기가 있다.

Playbook

  • playbook: YAML 파일
    • .yaml, .yml
  • play
  • task

test.yaml

# Play
- hosts: host1
  tasks:
    # Task
    - yum:
        name: httpd
        state: installed
    # Task
    - service
        name: httpd
        state: started
        enabled: yes

vim

vim의 enhanced 모듈을 설치하면 탭키를 사용할 때 얼만큼 이동할 건지 지정할 수 있어서 문서 관리가 편해진다.
항상 띄어쓰기는 두 칸씩 해야하며 스페이스바가 아닌 탭키를 이용한 띄어쓰기는 인식하지 못하기 때문에 주의해야한다.

yum -y install vim-enhanced

~/.vimrc

syntax on
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et ai
set cursorline
vim test.yaml

플레이북 실행

ansible-playbook <PLAYBOOK>.yaml

YAML 문법 확인

ansible-playbook wordpress.yaml --syntax-check

플레이북 시뮬레이션

ansible-playbook wordpress.yaml --check

텍스트의 변경 사항 확인

ansible-playbook wordpress.yaml --diff

--check 옵션과 함께 사용하는 경우가 많다.

실행할 시스템 제한

ansible-playbook wordpress.yaml --limit 192.168.100.12

적용될 호스트 목록

ansible-playbook wordpress.yaml --list-hosts

플레이북의 작업 목록

ansible-playbook wordpress.yaml --list-tasks

플레이북의 태그 목록

ansible-playbook wordpress.yaml --list-tags
  • 이전에 Ad_hoc을 이용했던 Wordpress 구현을 플레이북으로 변경
- hosts: wp
  tasks:
    - yum:
        name: https://rpms.remirepo.net/enterprise/remi-release-7.rpm
        state: present
        validate_certs: no
    - yum_repository:
        name: remi-safe
        file: remi-safe
        mirrorlist: http://cdn.remirepo.net/enterprise/7/safe/mirror
        description: remi-safe
        enabled: no
    - yum_repository:
        name: remi-php74
        file: remi-php74
        mirrorlist: http://cdn.remirepo.net/enterprise/7/php74/mirror
        description: remi-php74
        enabled: yes
        gpgcheck: yes
        gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
    - yum:
        name: httpd,php,php-mysqlnd,mariadb,mariadb-server,python2-PyMySQL
        state: installed
    - service:
        name: httpd
        state: started
        enabled: yes
    - service:
        name: mariadb
        state: started
        enabled: yes
    - get_url:
        url: https://wordpress.org/wordpress-5.9.3.tar.gz
        dest: /home/vagrant
    - unarchive:
        src: /home/vagrant/wordpress-5.9.3.tar.gz
        remote_src: yes
        dest: /var/www/html
        owner: apache
        group: apache
    - mysql_db:
        name: wordpress
        state: present
        login_user: root
    - mysql_user:
        name: wpadm
        password: P@ssw0rd
        state: present
        login_user: root
        priv: "wordpress.*:ALL"
    - copy:
        src: /var/www/html/wordpress/wp-config-sample.php
        remote_src: yes
        dest: /var/www/html/wordpress/wp-config.php
        owner: apache
        group: apache
    - replace:
        path: /var/www/html/wordpress/wp-config.php
        regexp: database_name_here
        replace: wordpress
    - replace:
        path: /var/www/html/wordpress/wp-config.php
        regexp: username_here
        replace: wpadm
    - replace:
        path: /var/www/html/wordpress/wp-config.php
        regexp: password_here
        replace: P@ssw0rd

'클라우드 > Ansible' 카테고리의 다른 글

Ansible | 반복문  (0) 2022.04.18
Ansible | Ansible 명령에서의 변수 활용  (0) 2022.04.18
Ansible | Ad_hoc  (0) 2022.04.18
Ansible | 구성 파일 및 권한 설정  (0) 2022.04.14
Ansible | 인벤토리  (0) 2022.04.14
Comments