Основное использование пьес анзибля и Quick Start

1. Каковы преимущества использования пьес
2. Признает пьесы (автоматическое развертывание Nginx)
3.YAML грамматика
структуру 4.playbook файла
5. Выполните операции (обработчики) при изменении
6. Mission Control (Теги)
7.playbook файл отладкой
8. Case : автоматическое развертывание Tomcat
9.Playbook определения переменного и использование

  1. мультиплексирование файл playbok

1. Каковы преимущества использования Playbook

Ansible真正的能力在于使用playbook,也就称为剧本
当我们在某个目录下执行某个命令的时候,那么我们可以使用ansible的ad hoc的模式快速执行,而无不虚编写文件或者剧本,但是对于配置的管理和应用的部署,通常有很多的操作,单独的去写ad hoc命令麻烦很多,而且ad hoc适用于简单命令的执行,所以我们使用playbook去完成,如果ansible是工作中用到的工具,那么ploybook就是相当于你使用ansible的说明书,而你的主机就是原材料,写playbook就像写说明书一样,它是一个按顺序执行的一个过程,playbook和ad hoc完全不是一种模式,并且功能强大

особенности Playbook
易读的编排语言:它是用最主流的yaml格式去编写的来实现应用的编排,非常适合配置和应用部署,也非常适合部署复杂的任务,我们可以通过声明式的内容将复杂的工作通过playbook进行编排。

Это -syntax проверка, чтобы проверить синтаксис пьес

[root@ansible playbook-test]# ansible-playbook nginx.yaml   --syntax-check 

playbook: nginx.yaml
[root@ansible playbook-test]# vim nginx.yaml 
[root@ansible playbook-test]# cat nginx.yaml 

---
 - hosts: webservers
  vars:
    hello: Ansible
  tasks:
  - name: Add repo
    yum_repository:
      name: nginx
      description: nginx repo
      baseurl: http://nginx.org/packages/centos/7/$basearch/
      gpgcheck: no
      enabled: 
  - name: Install nginx
    yum:
      name: nginx
      state: latest
  - name: Copy nginx configuration file
    copy:
      src: ./site.conf
      dest: /etc/nginx/conf.d/site.conf
  - name: Start nginx
    service:
      name: nginx
      state: started
  - name: Create wwwroot directory
    file:
      dest: /var/www/html
      state: directory
  - name: Create test page index.html
shell: echo "hello {{hello}}" > /var/www/html/index.html
[root@ansible playbook-test]# ls
nginx.yaml  site.conf

[root@ansible playbook-test]# vim site.conf
server {
    listen 80;
    server_name devops;
    location / {
        root   /var/www/html;
index index.html; }
}

Исполнение пьес
[root@ansible playbook-test]# ansible-playbook nginx.yaml
зрения процесс был начат

[root@ansible playbook-test]# ansible webservers -m shell -a "ps -ef |grep nginx"
10.4.7.22 | SUCCESS | rc=0 >>
root      10713      1  0 16:46 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     10714  10713  0 16:46 ?        00:00:00 nginx: worker process
root      10849  10848 10 16:49 pts/1    00:00:00 /bin/sh -c ps -ef |grep nginx
root      10851  10849  0 16:49 pts/1    00:00:00 grep nginx

10.4.7.21 | SUCCESS | rc=0 >>
root      10953      1  0 16:46 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     10954  10953  0 16:46 ?        00:00:00 nginx: worker process
root      11088  11087  0 16:49 pts/1    00:00:00 /bin/sh -c ps -ef |grep nginx
root      11090  11088  0 16:49 pts/1    00:00:00 grep nginx

YAML синтаксис
иерархии отступов
не поддерживает вкладки «Tab» отступы
обычно начинается с отступом два пробела
после символа отступом пространств, таких как двоеточие, запятые и т.д.
«---» указывает формат YAML, файл начало
«#» комментарий
выполнять операции (обработчики) при смене процессор
используется в основном при изменении операции, он может помочь вам вызвать другую задачу

  • хосты: WebServers
    gather_facts: НЕТ
    Эта информация собирается в списке хостов, будет очень много времени, это вообще отключить своп, так бы повысить эффективность нашего сборника пьес

Автоматическое развертывание Tomcat
1. Установите JDK
2. Скачать пакет кот
3. Распакуйте Tomcat
4. начало

установка Tomcat

---
- hosts: webservers
  gather_facts: no
  vars:
    tomcat_version: 9.0.29
    tomcat_install_dir: /usr/local

  tasks:
    - name: Install java-1.8.0-openjdk.x86_64
      shell: yum -y install java-1.8.0-openjdk.x86_64 state=present

    - name: Download tomcat
      get_url: url=http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.29/bin/apache-tomcat-9.0.29.tar.gz dest=/tmp
    - name: Unarchive tomcat-{{ tomcat_version }}.tar.gz
      unarchive:
        src: /tmp/apache-tomcat-{{ tomcat_version }}.tar.gz
        dest: "{{ tomcat_install_dir }}"
        copy: no

    - name: Start tomcat
      shell: cd {{ tomcat_install_dir }} &&
             mv apache-tomcat-{{ tomcat_version }} tomcat8 &&
             cd tomcat8/bin && nohup ./startup.sh &
[root@ansible tomcat-playbook]# ansible-playbook tomcat.yaml
[root@ansible tomcat-playbook]# ansible webservers -m shell -a "ps -ef |grep tomcat"

определение переменной Playbook и использование

  1. Командная строка
  2. Определено в инвентаре в
  3. Определено в сборник пьес в
  4. Определяется роль в
  5. Регистрация переменных (регистров)
  6. Системная переменная информация (факты)

Командная строка определяет переменную
Выдает информацию основной переменной

[root@ansible tomcat-playbook]# ansible-playbook --list-tags tomcat.yaml 

playbook: tomcat.yaml

  play #1 (webservers): webservers  TAGS: []
      TASK TAGS: []
[root@ansible tomcat-playbook]# ansible-playbook --list-tasks tomcat.yaml 

playbook: tomcat.yaml

  play #1 (webservers): webservers  TAGS: []
    tasks:
      Install java-1.8.0-openjdk.x86_64 TAGS: []
      Download tomcat   TAGS: []
      Unarchive tomcat-{{ tomcat_version }}.tar.gz  TAGS: []
      Start tomcat  TAGS: []

печать отладки модуля во время выполнения оператора, и может быть использован для отладки переменных или выражений, без остановки пьес.

[root@ansible tomcat-playbook]# vim 1.yaml

---
- hosts: webservers
  gather_facts: no
  remote_user: root

  tasks:
  - name: test var
    debug: msg="{{work_dir}}"
[root@ansible tomcat-playbook]# ansible-playbook 1.yaml -e work_dir=/usr/local

Эта переменная определена также имеют определенные требования, имена переменных, начинающиеся с буквы в

Другое определение запасов в
/ и т.д. / анзибле / хостах для определения переменных, переменные , передаваемый набор другого хоста или несколько хостов
может быть записано отдельно /etc/ansible/group_vars/webservers.yml, по умолчанию к какой группе вы читаете в переменной, модель удобнее YML
http_port: 8090
server_name: xiabanle


[root@ansible group_vars]# ansible webservers -a "echo {{http_port}}"
10.4.7.22 | SUCCESS | rc=0 >>
8090

10.4.7.21 | SUCCESS | rc=0 >>
8090

[root@ansible group_vars]# ansible webservers -a "echo {{server_name}}"
10.4.7.22 | SUCCESS | rc=0 >>
xiabanle

10.4.7.21 | SUCCESS | rc=0 >>
xiabanle

Модуль отладки используется для определения переменных пьес

---
- hosts: webservers
  gather_facts: no
  remote_user: root
  vars:
    - work_dir: /usr/local
    - nginx_version: 1.16

  tasks:
  - name: Install nginx
debug: msg="{{work_dir}}/nginx/{{nginx_version}}"
[root@ansible tomcat-playbook]# ansible-playbook 1.yaml --syntax-check

playbook: 1.yaml
[root@ansible tomcat-playbook]# ansible-playbook 1.yaml

使用file模块创建文件

---
- hosts: webservers
  gather_facts: no
  remote_user: root
  vars:
    - work_dir: /opt
    - nginx_version: 1.11

  tasks:
  - name: create dir
    file: "dest={{work_dir}}/nginx/{{nginx_version}} state=directory"

Регистрация переменная -зарегистрироваться
регистр переменных, чтобы сохранить результаты для выполнения определенных задач в переменном, так это способность динамически получить переменный, например, после выполнения задачи, происходит возврат в состояние, в зависимости от состояния надеется асинхронной обработка, в связи с переменной после предыдущей переписки хорошо, это трудно понять , что приобретается переменная.
Существует специальные отладочные отладки переменных, где время , пока файл определения динамического , когда файл был создан
в целом это , чтобы начать две услуг, как услуги имеют зависимости, только первый , чтобы запустить службу, второй один , чтобы начать, и что в этом случае, вы можете добавить зарегистрированные переменные службы в начале, если первая служба начинается , когда будет PID, или другой выход , то используйте определение переменного реестра.

---
- hosts: webservers
  gather_facts: no
  remote_user: root
  vars:
    - work_dir: /opt

  tasks:
    - name: register var
      command: date +"%F %T"
      register: datetime

    - name: touch file
      #debug: msg={{datetime}}
      file: dest=/tmp/r_{{datetime.stdout}} state=touch

Информационная система переменных (посты )
вызовов системных переменного хост / IP хоста и создать файл ,
который может пройти через установку вызов, чтобы увидеть наш анзибль интерфейса API

[root@ansible test]# ansible webservers -m setup

---
- hosts: webservers
  gather_facts: yes
  remote_user: root

  tasks:
  - name: touch file
    file: dest=/tmp/devops_{{ansible_hostname}} state=touch

playbok файл повторного использования
нашего мультиплексирование файла, вы можете использовать сборник пьес из incloud_tasks и import_tasks импорта в это преимущество заключается в том, что , когда мы идем , чтобы написать больше пьес, вы можете разбить его на множество мелких задач, разложение после него на более мелкие задачи, вы можете ссылаться в других местах, второе преимущество заключается в возможности организовать Playbook этих функциональные модули, если большой написать сценарий, возможно , сотни линий, техническое обслуживание и управление не очень хорошо, так там include_tasks и достичь import_tasks для выполнения этих требований
разницы Включать и импорт
всех файлов импорт
Include (динамический): импорт во время выполнения
 --list-теги, --list-задача не будет отображаться на выход
 не может использование уведомляет триггер внутри включают имя обработчика (обработчиков)

Импорт * (статический): Предимпортный во время пьес решены, то есть до PlayBook заранее до импорта пришел,
 не может быть использован с циклом
временем  переменными для имени файла назначения или ролей, не можешь использовать инвентарь (хост / переменные) в принимающих группы , такие как
мультиплексирование с случае:
установка lnmp / lnmt ,
что YAML только нужно использовать -Ввозные звонки на него

vim lnmp.yaml

---
 - import_playbook: nginx.yaml
 - import_playbook: mysql.yaml
 - import_playbook: php.yaml

vim nginx.yaml

---
- hosts: webservers
  gather_facts: no
  remote_user: root

  tasks:
  - name: Install nginx
    debug: msg="install nginx ... "  
[root@ansible web]# ansible-playbook lnmp.yaml   

Импорт для импорта пьес, и включает в себя импорт файл задача

[root@ansible web]# ansible-playbook test.yaml

---
- hosts: webservers
  gather_facts: no
  remote_user: root

  tasks:
  - name: task1
    debug: msg="test1"

  - name: task2
    debug: msg="test2"

Однако развертывание этой миссии задач, задача может быть относительно долго разлагается, можно разделить на отдельные файлы, например, есть две задач, первые разрушат задачи в один файл, а второй разлагаются в файл, а затем импортировать в использовании включает

vim test.yaml

---
- hosts: webservers
  gather_facts: no
  remote_user: root

  tasks:
  - include_tasks: task1.yaml
  - include_tasks: task2.yaml

vim task1.yaml

---
- name: tasks1
  debug: msg="test1"
vim task2.yaml

---
- name: tasks2
  debug: msg="test2"

рекомендация

отblog.51cto.com/14143894/2454593