[Ansible] 플레이북

728x90

플레이북 실행

ansible-playbook <YAML 파일 경로> -b

-b 옵션은 관리자 권한을 주는 것, 플레이북 내에서 권한을 줄 수도 있다.

플레이북은 태스크를 각각의 관리 노드에 순차적으로 적용하며 실행된다.

태스크의 모든 작업이 끝나야 다음 태스크로 넘어간다. 즉, 동기적으로 태스크가 실행된다.

[vagrant@controller ~]$ ansible-playbook test.yml -b

PLAY [wp] **********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.100.11]

TASK [yum] *********************************************************************
ok: [192.168.100.11]
.
.

YAML 문법 확인

ansible-playbook <YAML 파일 경로> --syntax-check

[vagrant@controller ~]$ ansible-playbook test.yml --syntax-check

playbook: test.yml

플레이북 시뮬레이션

ansible-playbook <YAML 파이> --check -b

플레이북 내용을 바탕으로 시뮬레이션을 돌려준다. 실제로 작업 내용을 관리 노드에 적용시키지는 않는다.

[vagrant@controller ~]$ ansible-playbook test.yml -b -b --check

PLAY [wp] **********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.100.11]
ok: [192.168.100.12]

TASK [yum] *********************************************************************
ok: [192.168.100.11]
ok: [192.168.100.12]

TASK [yum_repository] **********************************************************
ok: [192.168.100.11]
ok: [192.168.100.12]

TASK [yum_repository] **********************************************************
ok: [192.168.100.11]
ok: [192.168.100.12]
.
.

관리노드 변경점 확인

ansible-playbook <YAML 파일 경로> --diff -b

--diff 옵션은 파일의 변경점을 텍스트 형태로 보여준다.

[vagrant@controller ~]$ ansible-playbook test.yml -b
TASK [replace] *****************************************************************
--- before: /var/www/html/wordpress/wp-config.php
+++ after: /var/www/html/wordpress/wp-config.php
@@ -23,7 +23,7 @@
 define( 'DB_NAME', 'database_name_here' );

 /** Database username */
-define( 'DB_USER', 'username_here' );
+define( 'DB_USER', 'wpadm' );

 /** Database password */
 define( 'DB_PASSWORD', 'password_here' );

changed: [192.168.100.11]

TASK [replace] *****************************************************************
--- before: /var/www/html/wordpress/wp-config.php

192.168.100.11
+++ after: /var/www/html/wordpress/wp-config.php
@@ -20,7 +20,7 @@

 // ** Database settings - You can get this info from your web host ** //
 /** The name of the database for WordPress */
-define( 'DB_NAME', 'database_name_here' );
+define( 'DB_NAME', 'wordpress' );

 /** Database username */
 define( 'DB_USER', 'wpadm' );

changed: [192.168.100.11]
.
.

실행할 시스템 제한

ansible-playbook <YAML 파일> --limit <호스트 명, IP 주소, 그룹>

limit 뒤에 오는 관리 노드만 플레이북을 실행시켜준다.

[vagrant@controller ~]$ ansible-playbook test.yml -b --limit 192.168.100.12

PLAY [wp] **********************************************************************

TASK [Gathering Facts] *********************************************************
ok: [192.168.100.12]

TASK [yum] *********************************************************************
ok: [192.168.100.12]
.
.

호스트 목록 확인

ansible-playbook <YAML 파일> --list-hosts

[vagrant@controller ~]$ ansible-playbook test.yml --list-hosts

playbook: test.yml

  play #1 (wp): wp      TAGS: []
    pattern: [u'wp']
    hosts (2):
      192.168.100.11
      192.168.100.12

태스크 목록 확인

ansible-playbook <YAML 파일> --list-tasks

[vagrant@controller ~]$ ansible-playbook test.yml --list-tasks

playbook: test.yml

  play #1 (wp): wp      TAGS: []
    tasks:
      yum       TAGS: []
      yum_repository    TAGS: []
      yum_repository    TAGS: []
      rpm_key   TAGS: []
      yum       TAGS: []
      service   TAGS: []
      service   TAGS: []
      get_url   TAGS: []
      unarchive TAGS: []
      mysql_db  TAGS: []
      mysql_user        TAGS: []
      copy      TAGS: []
      replace   TAGS: []
      replace   TAGS: []
      replace   TAGS: []
728x90