一篇带你熟悉ansible-playbook剧本-LMLPHP

#playbook介绍

#playbook简单介绍
playbook翻译过来就是剧本,以yml/yaml为后缀结尾的一个文本文件 #playbook组成:分为两部分play(定义主机的角色)和task(具体执行什么任务)
play (找谁) 如- hosts: update()
tasks (干什么) 如:安装软件,包括文件

#ansible-playbook命令帮助

# man ansible-playbook
# ansible-playbook -h
#语法格式:ansible-playbook [option] playbook.yml [playbook2 ….] #常用参数:
-C, --check #检查,运行但是不做任何的操作
-f FORKS, --forks=FORKS #用来做并发
--list-hosts #列出主机列表
--syntax-check #进行语法检查

#playbook书写格式

#缩进    YAML使用固定的缩进风格表示层级结构,每个缩进两个空格,不适用tabs键,如
- hosts: update
tasks: #冒号 除了以冒号结尾的,其他所有冒号后面都必须有空格,如
- hosts: update tasks:(冒号结尾不用空格) #短横线 表示列表项,适用一个短横杠加一个空格。多个项适用同样的缩进级别作为同一列表
- hosts: update
tasks:
- name:

#使用步骤

#1.定义主机的角色
- hosts: k8s-master #2、在playbooks中定义任务
tasks:
- name: task description #任务描述信息
- module_name: module args #需要使用的模块名字:模块参数 #3、ansible-playbook执行命令
[root@ctos1 roles]# ansible-playbook site.yml

#基本使用

1.使用剧本方法给被控制端创建用户组和用户

#1.1、查看定制的组,如果想控制不同功能的服务器,就划分到不同的组
[root@k8s-master yaml]# tail -n 7 /etc/ansible/hosts
[k8s-etcd]
192.168.86.131 [k8s-node]
192.168.86.132
192.168.86.133 #1.2、编写yml文件
[root@k8s-master yaml]# pwd
/etc/ansible/yaml
[root@k8s-master yaml]# cat a1.yml
- hosts: k8s-node
tasks:
- name: creategroup
group: name=guoke
- name: createuser
user: name=demo10 #检查有无语法错误
[root@k8s-master yaml]# ansible-playbook --syntax-check a1.yml playbook: a1.yml #列出这个组的主机列表
[root@k8s-master yaml]# ansible-playbook --list-hosts a1.yml
playbook: a1.yml play #1 (k8s-node): k8s-node TAGS: []
pattern: [u'k8s-node']
hosts (2):
192.168.86.133
192.168.86.132 #-C就是检查,白跑的,不会进行任何的操作
[root@k8s-master yaml]# ansible-playbook -C a1.yml #1.3、执行创建
[root@k8s-master yaml]# ansible-playbook a1.yml #1.4、到被控制端查看效果
[root@node1 ~]# id demo10
uid=1005(demo10) gid=1006(demo10) groups=1006(demo10)

2.安装http服务,启动服务并加入开机自启,放行相对应的端口

#需求
安装http服务 yum
编写简单的网页进行测试 copy
启动服务并加入开机自启 service
放行firewalld对应的端口 firewalld [root@game yaml]# cat install_pack.yml
- hosts: all
tasks:
- name: Install httpd Packages
yum: name=httpd state=present - name: http configure
copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf backup=yes - name: configure content
copy: src=/var/www/html/index.html dest=/var/www/html/index.html owner=root group=root mode=644 - name: start httpd services
service: name=httpd state=started enabled=yes - name: start firewall services
service: name=firewalld state=started - name: configure firewalld
firewalld: zone=public service=http permanent=yes immediate=yes state=enabled #进行语法检查
[root@game yaml]# ansible-playbook --syntax-check install_pack.yml
[root@game yaml]# ansible-playbook install_pack.yml

3.使用ansible安装并配置nfs服务

#服务端:192.168.228.130
1.安装nfs
2.配置nfs
3.根据配置创建目录,创建用户,授权
4.启动并加入开机自启 #客户端:192.168.228.131
1.准备一个空目录
2.挂载服务端共享的目录
#提示:如果客户端没有安装nfs-utils,需要进行安装再挂载,否则会挂载的时候会报错、 [root@game yaml]# cat nfs.yml
- hosts: 192.168.228.130
tasks:
- name: Installed nfs Services
yum:
name: nfs-utils
state: present - name: Configure NFS
copy:
src: /etc/exports
dest: /etc/exports
backup: yes - name: Create Group
group:
name: www
gid: '666' - name: Create User
user:
name: www
uid: '666'
group: '666'
shell: /sbin/nologin
create_home: no - name: Create Driectory
file:
path: /data
state: directory
owner: www
group: www
recurse: yes - name: Start NFS Server
service:
name: nfs
state: restarted
enabled: yes - hosts: 192.168.228.131
tasks:
- name: Install NFS Client
yum:
name: nfs-utils
state: present - name: Create Mount Driectory
file:
path: /nfs_cl
state: directory - name: Client Mount NFS Server
mount:
src: 192.168.228.130:/data
path: /nfs_cl
fstype: nfs
opts: defaults
state: mounted
#参数解释:
1.file模块:path:指定路径,state:创建的是目录,owner:指定所属主,group:指定所属组,recurse:递归创建
2.mount模块:src:源挂载点,path:本地挂载目录,fstype:类型
3.更多信息可使用ansible-doc +模块名查看帮助 #执行效果
[root@game yaml]# ansible-playbook --syntax-check nfs.yml #语法检查
[root@game yaml]# ansible-playbook nfs.yml
05-28 02:52