Ansible自动化运维(五)----Ansible剧本

Ansible自动化运维(五)----Ansible剧本

Ansible核心的功能,作用就是进行配置管理。

Ansible需要编写的 playbook 剧本需要遵循一定的规则,格式,这个格式就称之为yaml语法。学习一下yaml语法。

使用剧本批量安装nginx服务

# 1.批量卸载nginx服务
# 先查询被管理节点的机器,是否装了nginx
[root@Ansible-01 ~]# ansible shenfu -m shell -a "rpm -qa nginx"
123.57.235.127 | CHANGED | rc=0 >>
nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64

# 批量卸载nginx 
[root@Ansible-01 ~]# ansible shenfu -m yum -a "name=nginx state=absent" 
123.57.235.127 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": true,
    "msg": "",
    "rc": 0,
    "results": [
        "Removed: nginx-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64",
        "Removed: nginx-all-modules-1:1.14.1-9.module_el8.0.0+184+e34fea82.noarch",
        "Removed: nginx-mod-http-image-filter-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64",
        "Removed: nginx-mod-http-perl-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64",
        "Removed: nginx-mod-http-xslt-filter-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64",
        "Removed: nginx-mod-mail-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64",
        "Removed: nginx-mod-stream-1:1.14.1-9.module_el8.0.0+184+e34fea82.x86_64"
    ]
}

# 2.编写一个yaml配置文件,注意语法格式
[root@Ansible-01 ~]# cat -n /tmp/install_nginx.yaml
     1	# install nginx yaml,by shenfu
     2	- hosts: all
     3	  tasks:
     4	      - name: Install nginx service
     5	 		yum: name=nginx state=present
     6	      - name: Copy Nignx.conf to every_server
     7			copy: src=./nginx.conf

# 1.表示注释信息,可以用#号,也可以用三个短横线当做注释
# 2.表示定义playbook管理的目标机器,可以写all管理所有,也可以单独的填写ip,也可以填写主机名
# 3.定义playbook需要完成的任务的集合,比如你要定义2,第一个是安装nginx通过yum模块,第二个是通过copy模块,发送管理节点上的配置文件,发送给被管理的客户端机器
# 4.定义任务的名字,是一个自定义的帮助信息
# 5.定义任务的具体操作,指定用哪些模块,与参数
# 6~7行作用是和4~5行是一样了

playbook剧本的组成规范

​ 剧本很重要的就是,定义演员的信息(其实就是定义主机的信息),演员的具体任务(以及主机要执行的模块,动作)。
​ Ansible的剧本也是由两个最基本的部分组成。

  • hosts定义的被管理的主机列表信息(演员有哪些)
  • tasks关键词定义的被管理主机需要执行的动作(演员要做什么事)

剧本之hosts部分

# 方式一,定义被管理主机的ip地址
- hosts: 192. 168.178.138
  tasks:
 	- name: 这是我第一个任务
	  yum: name=nginx state=installed

# 方式二,定义被管理主机的名字,注意该主机名必须能够解析
- hosts: backup01
  tasks:
    - name:需要执行的动作

#方式三,定义多个主机信息
- hosts: 192.168.178.138,192.168.178.139,backup01
  tasks:
	- name: 执行的动作...
	
#方式四,填写所有的主机
- hosts: all
  tasks:

​ 定义被管理的主机,有一个重要的前提,就是被管理的主机必须在ansible管理的hosts文件中有对应的信息,否则识别不了/etc/ansible/hosts

剧本之tasks讲解

  • 变量形式定义task任务,name="shenfu” age=18
  • 还可以使用字典形式定义,特点是key:value,相关的词语,自卑,自豪,自律,自力更生
    • name:“shenfu”
    • age:18
    • addr: “北京沙河”
# 定义task方式一:采用变量形式设置任务
tasks:
  -	name: make sure apache is runing
    service: name=httpd state=running 

  - name: copy file. .
	copy: src=/etc/ansible/hosts dest=/etc/ansible/hosts
		  owner=root group=root mode=0644
		  
# 当传入的参数列表过长的时候,我们还可以将其分割

# 方式二,采用字典形式设置多个任务
tasks:
  - name:copy file to client...
	copy:
	  src: /etc/ansible/hosts 
	  dest: /etc/ansible/hosts
	  owner: root
	  group: root
      mode: 0644

yaml语法规范

​ 在学习ansible的时候,编写palybook是最重要的环节,那么palybook是遵循yaml语法,因此需要掌握yaml语法的数据格式。

目前主流使用的数据格式,有json、xml、yaml,都属于数据序列化格式。

yaml更容易被解析,已读,因此更多的使用在了配置文件当中,ansible、saltstack、k8s都用yaml。

yaml基本语法

  • 大小写敏感
  • 使用缩进表示层级的关系(同样的空格数量)
  • 在配置缩进关系的时候,禁止用tab键,请一个一个用空格键表示
  • 相同元素的左侧空格数目不重要,只需要对其即可

yaml 语法支持的数据结构

  • 对象,指的就是字典的概念,key: value,注意key: 后面有一个空格
  • 数组,指的就是列表的概念

playbook编写的规范

剧本的缩进关系,一般是两个空格作为一个缩进,且空格数目无所谓,左侧对齐即可。

- hosts: shenfu
  tasks: 
    - name: 安装nginx 
	  yum: name=nginx state= installed
	- name: 执行脚本
	  script:/server/scripts/test_ansible.sh 
playbook实际编写与执行

剧本编写完成之后,还得执行才能工作。
在ansible程序中,加载模块的功能可以直接使用ansible adhoc命令行形执行加载剧本中的功能,可以使用ansible- playbook命令去执行脚本。

# 基本执行语法
ansible-playbook nginx.yaml   # 可以使用绝对相对路径

# 查看剧本命令的帮相信息
ansible-playbook -h

# 查看剧本的执行详细输出
ansible-playbook nginx.yaml --verbose

# 查看剧本影响的主机列表信息
ansible-playbook nginx.yaml --list-hosts

# 执行剧本加载指定的主机清单文件,默认剧本使用的是/etc/ansible/hosts
ansible-playbook nginx.yaml -i /etc/my_ansible/hosts

# 执行剧本并且检查语法
ansible-playbook nginx.yaml --syntax-check

# 调试剧本,只是调试,但是不会对被管理节点发生改变
ansible-playbook nginx.yaml -C # 模拟执行,不影响客户端机器

playbook之部署rsync服务

  1. 进行思考,剧本如何设计,和安排

  2. 先考虑好部署rsync的整个过程

    部署的思路过程如下,然后转化成playbook剧本的过程就可以

    1. 安装rysnc服务,使用yum
    2. 编写rsync配置文件,(常用的操作是,在Ansible-01管理机器上编写好配置文件,分发给客户端机器即可) copy模块
    3. 创建rsync用户,使用ansible的user模块
    4. 创建用于rsync验证的文件,还是选择在Ansible-01上写好后分发,copy模块,注意文件权限设置
    5. 创建数据备份的文件夹,rsync指定 了bakcup模块,备份目录是
      /data_ backup/,调用file模块创建文件夹
    6. 启动rsync服务端,且是守护进程模式,shell模块,systemd模块

上述部署思路转化为ansible playbook的写法

[root@m01 myyaml]# cat install_rsync.yaml
- hosts: 192.168.178.115
 tasks:
   - name: step01,install rsync service
	 yum: name=rsync state=installed
   - name: step02,edit rsync conf file
     copy: src=/etc/ansible/rsync_conf/rsyncd.conf
dest=/etc/rsync/conf/

   - name: step03,create user rsync
     user: name=rsync state=present createhome=no
shell=/sbin/nolgoin

   - name: step04,create user auth file
     copy: src=/etc/ansible/rsync_conf/rsync.password
dest=/etc/rsync/conf/ mode=0600
   - name: step05,create backup dir
     file: dest=/data_backup/ state=directory owner=rsync
group=rsync
   - name: step06,run rsync server
     shell: rsync --daemon creates=/var/run/rsync.pid

运行剧本的方法

ansible-playbook install_rsync.yaml -C
ansible-playbook install_rsync.yaml
----根据于超老师视频讲解进行笔记,做了相对更改,如有侵权请联系作者删除。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值