#前言:本文将继续讲解ansible系列知识,前两篇讲解了ansible入门、基本使用和常用模块使用,这篇将介绍ansible-playbook和它基本的编写格式使用
#playbook(剧本)介绍
#playbook简单介绍
playbook翻译过来就是剧本,以yml/yaml为后缀结尾的一个文本文件
#playbook组成:分为两部分play(定义主机的角色)和task(具体执行什么任务)
play (找谁) 如- hosts: update()
tasks (干什么) 如:安装软件,包括文件
#playbook命令帮助
[root@k8s-master ~]# man ansible-playbook
[root@k8s-master ~]# ansible-playbook -h
#语法格式:ansible-playbook [option] playbook.yml [playbook2 ….]
#常用参数:
-C, --check #检查,运行但是不做任何的操作
-f FORKS, --forks=FORKS #用来做并发
--list-hosts #列出主机列表
--syntax-check #进行语法检查
#playbook书写格式
#缩进 YAML使用固定的缩进风格表示层级结构,每个缩进两个空格,不适用tab键,如
- 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 test.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.安装htt服务,启动服务并加入开机自启,放行相对应的端口
#思路
1.安装http服务 yum
2.编写简单的网页进行测试 copy
3.启动服务并加入开机自启 service
4.放行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