文章目录
一、剧本(playbook)
1.playbook介绍
playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbook是由一个或多个”play”组成的列表。 当对一台机器做环境初始化的时候往往需要不止做一件事情,这时使用playbook会更加适合。通过playbook你可以一次在多台机器执行多个指令。通过这种预先设计的配置保持了机器的配置统一,并很简单的执行日常任务。
ansible通过不同的模块实现相应的管理,管理的方式通过定义的清单文件(hosts)所管理的主机包括认证的方式连接的端口等。所有的功能都是通过调用不同的模块(modules)来完成不同的功能的。不管是执行单条命令还是play-book都是基于清单文件。
**playbook格式:**playbook由YMAL语言编写。YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。
一个剧本里面可以有多个play,每个play只能有一个tasks,每个tasks可以有多个name。
2.playbooks的组成
**Tasks:**任务,即通过 task 调用 ansible 的模块将多个操作组织在一个playbook 中运行。
**Variables:**变量
**Templates:**模板
**Handlers:**处理器,当 changed 状态条件满足时,(notify)触发执行的操作。
**Roles:**角色
3.案例:编写httpd的playbook
(1)vim test1.yaml
---
- name: install apache
hosts: webservers
remote_user: root
tasks:
- name: test connection
ping:
- name: disable selinux
command: '/usr/sbin/setenforce 0'
ignore_errors: true
- name: disable firewalld
service: name=firewalld state=stopped
- name: install httpd
yum: name=httpd
- name: copy configuration file for httpd
copy: src=/opt/httpd.conf dest=/etc/httpd/conf/httpd.conf
notify: "restart httpd"
- name: start httpd
service: name=httpd state=started enabled=yes
handlers:
- name: restart httpd
service: name=httpd state=restarted
在服务端准备http.conf文件
(在/etc/httpd/http.conf 复制一份文件到opt目录下 )
并且修改其中 端口 和server name 端口
(2)运行playbook 剧本
ansible-playbook test1.yaml
补充参数:
-k ( -ask-pass) :用来交互输入ssh密码
-K ( -ask-become-pass) :用来交互输入sudo密码
-u:指定用户
ansible-playbook test1.yaml --syntax-check
检查yaml文件的语法是否正确
ansible-playbook test1.yaml --list-task
#检查tasks任务
ansible-playbook test1.yaml --list-hosts
#检查生效的主机
ansible-playbook test1.yaml --start-at-task='install httpd'
#指定从某个task开始运行