Ansible 자동 운영 및 유지 관리 도구 플레이 북 사용 (2)

플레이 북

플레이 북 소개

플레이 북은 하나 이상의 ansible 모듈 목록입니다. 플레이 북의 주요 기능은 사전 정의 된 호스트 세트를 ansible의 작업에 의해 정의 된 역할로 가장하는 것입니다.이 작업은 실제로 ansible의 모듈을 호출하여 플레이 북의 작업을 구성하므로 결합 될 수 있습니다. 사전 배열 된 메커니즘에 따라 사전 정의 된 작업, 플레이 북 파일은 yaml 형식으로 작성됩니다.

플레이 북 명령

체재:

ansible-playbook <filename.yaml> [options]

일반적인 옵션 :

옵션 상세한
–C 、 – 체크 플레이 북이 잘못되었는지 여부를 감지하는 데 사용되는 실제 실행이 아닌 사전 실행
–list-hosts 작업을 실행하는 호스트 나열
– 목록-태그 태그 나열
– 목록 작업 작업 나열
-한도 호스트 목록의 호스트에 대해서만 실행
-티 태그를 실행하도록 지정
-v, -vv 실행 프로세스 표시

플레이 북 핵심 구성 요소

  • 호스트 : 작업이 실행되는 원격 호스트 목록
  • 작업 : 작업 세트
  • 변수 : 기본 제공 변수 또는 사용자 지정 변수는 플레이 북에서 호출됩니다.
  • 템플릿 : 템플릿, 템플릿 파일의 변수를 대체하고 몇 가지 간단한 논리를 구현할 수있는 파일
  • 핸들러 및 알림 : 특정 조건에 의해 시작된 작업은 조건이 충족 될 때만 실행되며 그렇지 않으면 그렇지 않습니다.
  • 태그 : 태그는 플레이 북에서 실행할 코드의 일부를 선택하는 데 사용되는 특정 작업 실행을 지정합니다.

핵심 구성 요소 사용

호스트 구성 요소

호스트 : 플레이 북에있는 각 paly의 목적은 특정 호스트가 지정된 사용자로 작업을 수행 할 수 있도록하는 것입니다. 호스트는 지정된 작업을 수행 할 호스트를 지정하는 데 사용되며 사전에 호스트 목록 (/ etc / ansible / hosts)에 정의되어야합니다.

[nginx]
192.168.0.182
[httpd]
192.168.0.178
[web]
192.168.0.178
192.168.0.182
[ssh]
192.168.0.178:22

플레이 북 케이스 :

- hosts: httpd
- host: web:!nginx

remote_user 구성 요소

remote_user : 호스트 및 작업에서 사용할 수 있습니다. paly, global 또는 task에 사용할 수있는 sudo를 통해 원격 호스트에서 작업을 수행하도록 지정할 수도 있습니다. 또한 sudo_user를 사용하여 sudo가 전환 될 때 전환 할 사용자를 지정할 수 있습니다.

플레이 북 케이스 :

- hosts: web
  remote_user: root
  tasks:
    - name: test connection
      ping:
      remote_user: test
      sudo: yes
      sudo_user: usertest

작업 목록 및 작업 구성 요소

플레이 북의 주요 부분은 하나 이상의 작업을 포함하는 작업 목록으로, 각 작업은 호스트에 지정된 모든 호스트에서 하나씩 실행됩니다. 즉, 첫 번째 작업이 모두 완료된 후 두 번째 작업이 시작됩니다. 호스트.
태스크의 목적은 지정된 매개 변수로 모듈을 실행하는 것이며, 모듈 매개 변수에 변수를 사용할 수 있습니다. 모듈 실행은 멱 등성입니다. 즉, 결과가 일관 적이기 때문에 여러 실행이 안전함을 의미합니다.
각 작업에는 플레이 북의 실행 결과를 출력하는 데 사용되는 이름이 있어야하며, 내용이 작업을 명확하게 설명 할 수있는 것이 좋습니다. 이름이 제공되지 않으면 조치 결과가 출력에 사용됩니다.

두 가지 형식의 작업 :

  1. 동작 : 모듈 인수
  2. module : 인수가 권장됩니다.
    참고 : 쉘 및 명령 모듈 뒤에는 key = value가 아닌 명령이 나옵니다
    .
- hosts: web
  remote_user: root
  tasks:
    - name: install web service
      yum: name=httpd
    - name: start web service
      service: name=httpd state=started enable=yes
- hosts: web
  remote_user: root
  tasks:
    - name: ls file
      shell: ls /opt/

간단한 플레이 북 작성

- hosts: web
  remote_user: root
  tasks:
    - name: "安装httpd服务"
      yum: name=httpd
    - name: "复制配置文件"
      copy: src=/opt/httpd.conf dest=/etc/httpd/conf/
    - name: "复制主页文件"
      copy: src=/opt/index.html dest=/var/www/html/
    - name: "启动服务"
      service: name=httpd state=started enable=yes

핸들러 사용 및 플레이 북에서 알림

핸들러는 본질적으로 MySQL의 트리거에 의해 트리거되는 동작과 유사한 작업 목록입니다. 작업은 앞서 언급 한 작업과 본질적으로 다르지 않으며 주로 관심있는 리소스가 변경 될 때 특정 작업을 수행하는 데 사용됩니다. 알림에 해당하는 작업은 각 재생이 끝날 때 트리거되도록 사용할 수 있으며, 여러 변경이 발생할 때마다 동일한 작업을 수행하지 않고 모든 변경이 발생한 후 지정된 작업을 한 번만 수행 할 수 있습니다. 알림에 나열된 작업을 핸들러라고합니다. 즉, 핸들러에 정의 된 작업이 알림에서 호출됩니다.
예:

- hosts: web
  remote_user: root
  tasks:
    - name: "安装httpd服务"
      yum: name=httpd
    - name: "复制配置文件"
      copy: src=/opt/httpd.conf dest=/etc/httpd/conf/
    - name: "复制主页文件"
      copy: src=/opt/index.html dest=/var/www/html/
      notify: restart httpd
    - name: "启动服务"
      service: name=httpd state=started enable=yes
  handlers:
    - name: restart httpd
      service: name=httpd state=restart

이 플레이 북을 다시 실행하여 httpd 서비스의 구성 파일을 변경하면 알림이 수신 대기하고 구성 파일이 변경되면 restart httpd라는 핸들러가 실행됩니다.

플레이 북에서 태그 사용

플레이 북에서 태그 컴포넌트를 사용하여 특정 작업에 대한 태그를 지정할 수 있으며, 플레이 북이 다시 실행되면 전체 플레이 북을 실행하는 대신 특정 태그에 대한 작업 실행을 지정할 수 있습니다.

예:

- hosts: web
  remote_user: root
  tasks:
    - name: "安装httpd服务"
      yum: name=httpd
    - name: "复制配置文件"
      copy: src=/opt/httpd.conf dest=/etc/httpd/conf/
    - name: "复制主页文件"
      copy: src=/opt/index.html dest=/var/www/html/
      tags: conf
      notify: restart httpd
    - name: "启动服务"
      service: name=httpd state=started enable=yes
  handlers:
    - name: restart httpd
      service: name=httpd state=restart
ansible-play -t conf http.yaml

플레이 북에서 변수 사용

변수 이름은 문자, 숫자, 밑줄로만 구성 할 수 있으며 문자로만 시작할 수 있습니다.

예:

http_port=80

변수 호출 방법 : { {http_port}}를 통해 변수 호출하고 중괄호 앞뒤의 공백에주의하십시오. 때때로 "{ {http_port}}" 호출 이 적용됩니다.

  • 변수 방법 정의

명령 줄을 통해 변수를 정의합니다.

ansible-playbook -e http_port=80
  • 플레이 북에서 변수 정의
- hosts: web
  remote_user: root
  gather_facts: no
vars:
  - http_port: 80
  - name: httpd
  tasks:
    - name: "安装httpd服务"
      yum: name=httpd
    - name: "复制配置文件"
      copy: src=/opt/httpd.conf dest=/etc/httpd/conf/
    - name: "复制主页文件"
      copy: src=/opt/index.html dest=/var/www/html/
      tags: conf
      notify: restart httpd
    - name: "启动服务"
      service: name=httpd state=started enable=yes
  handlers:
    - name: restart httpd
      service: name={
    
    {
    
     name }} state=restart

플레이 북에서 사용

Playbook에서 실행 조건이 만족되는지 판단하는 데 사용되는 경우 만족하면 실행하고 만족하지 않으면 건너 뜁니다
.

- hosts: db
  remote_user: root
  tasks:
    - name: install mysql-server
      yum: name=mysql-server
      when: {
    
    {
    
     ansible_distribution_major_version }} == 6
    - name: install mariadb-server
      yum: name=mariadb-server
      when: {
    
    {
    
     ansible_distribution_major_version }} == 7

플레이 북에서 with_items 사용

플레이 북의 With_items는 사용자를 일괄 적으로 추가하거나 소프트웨어를 일괄 적으로 다운로드하는 등 반복되는 변수를 빠르게 반복적으로 업데이트 할 수 있습니다. 여기서 항목은 목록이나 사전이 될 수 있습니다.
예 :

- hosts: db
  remote_user: root
  tasks:
    - name: add user
      user: name={
    
    {
    
     item }} state=present
      with_items:
        - testuser1
        - testuser2
- hosts: db
  remote_user: root
  tasks:
    - name: add user
      user: name={
    
    {
    
     item.name }} state=present group={
    
    {
    
     item.group }}
      with_items:
        - {
    
    name: 'user1',group: 'system'}
        - {
    
    name: 'user2',group: 'system'}

추천

출처blog.csdn.net/qq_33235529/article/details/114529342