1. Каковы преимущества использования пьес
2. Признает пьесы (автоматическое развертывание Nginx)
3.YAML грамматика
структуру 4.playbook файла
5. Выполните операции (обработчики) при изменении
6. Mission Control (Теги)
7.playbook файл отладкой
8. Case : автоматическое развертывание Tomcat
9.Playbook определения переменного и использование
- мультиплексирование файл 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 и использование
- Командная строка
- Определено в инвентаре в
- Определено в сборник пьес в
- Определяется роль в
- Регистрация переменных (регистров)
- Системная переменная информация (факты)
Командная строка определяет переменную
Выдает информацию основной переменной
[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"