剧本编写规范: pyyaml -- 三点要求 1. 合理的信息缩进 两个空格表示一个缩进关系 标题一 标题二 标题三 PS: 在ansible中一定不能用tab进行缩进
剧本的组成
- hosts: xxx
tasks:
- name: xxxx:xxx
yum: xxx
- name: 2. 冒号的使用方法 - hosts: 172.16.1.100 tasks: yum: name=xx PS: 使用冒号时后面要有空格信息 以冒号结尾,冒号信息出现在注释说明中,后面不需要加上空格 3. 短横线应用 -(列表功能) - 张三 男 打游戏 运动 - 李四 女 学习 湖南 - 王五 男 运动 深圳 PS: 使用短横线构成列表信息,短横线后面需要有空格 开始编写剧本 mkdir /etc/ansible/ansible-playbook vim rsync_server.ymal 说明: 剧本文件扩展名尽量写为yaml或者yml 1. 方便识别文件是一个剧本文件 2. 文件编写时会有颜色提示 - hosts: 172.16.1.110 tasks: yum: name=rsync state=installed copy: src=/tmp/rsyncd.conf dest=/etc/ src=本地 dest=远端 如何执行剧本: 第一个步骤: 检查剧本的语法格式 ansible-playbook --syntax-check rsync_server.yaml 第二个步骤: 模拟执行剧本 ansible-playbook -C rsync_server.yaml 第三个步骤: 直接执行剧本 ansible-playbook rsync_server.yaml
05 剧本的编写方法
剧本的作用: 可以一键化完成多个任务
自动化部署nfs服务:
服务端的操作
第一个历程安装软件:rpcbind(一般是安装自启的,所以不需要安装) ansible 10.0.0.100 -m yum -a "name=nfs-utils state=installed" 第二个历程编写配置文件: ansible 10.0.0.100 -m copy -a "content='/data01 10.0.0.110(rw,sync)' dest=/etc/exports” 第三个历程创建nfs目录并指定属主属组 ansible 10.0.0.100 -m user -a "path=/data state=directory owner=nfsnobody group=nfsnobody" 第四个历程启动服务 ansible 10.0.0.100 -m service -a "name=nfs state=started enabled=yes"
剧本yml编写nfs:
#nfs server - hosts: 10.0.0.110 tasks: - name: 01-install nfs package yum: name: ['nfs-utils', 'rpcbind'] state: installed - name: 02-write conf file copy: content='/data01 10.0.0.110(rw,sync)' dest=/etc/exports - name: 03-create dir file: path=/data01 state=directory owner=nfsnobody group=nfsnobody - name: 04-restart nfs server an enable service: name={{ item }} state=restarted enabled=yes with_items: - rpcbind - nfs
06 如何配置主机清单
第一种方式: 分组配置主机信息
[web]
172.16.1.7
172.16.1.8
172.16.1.9
[data]
172.16.1.31
172.16.1.41
操作过程
[root@m01 ansible-playbook]# ansible data -a "hostname"
172.16.1.31 | CHANGED | rc=0 >>
nfs01
172.16.1.41 | CHANGED | rc=0 >>
backup
第二种方式: 主机名符号匹配配置
[web]
172.16.1.[7:9]
[web]
web[01:03]
第三种方式: 跟上非标准远程端口
[web]
web01:52113
172.16.1.7:52113
第四种方式: 主机使用特殊的变量
[web] 未分发秘钥时连接
172.16.1.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456
[web] 未进行解析时
web01 ansible_ssh_host=172.16.1.7 ansible_ssh_port=52113 ansible_ssh_user=root ansible_ssh_pass=123456
第五种方式: 主机组名嵌入配置
[rsync:children] --- 嵌入子组信息
rsync_server
rsync_client
[rsync_server]
172.16.1.41
[rsync_client]
172.16.1.31
172.16.1.7
[web:vars] --- 嵌入式变量信息
ansible_ssh_host=172.16.1.7
ansible_ssh_port=52113
ansible_ssh_user=root
ansible_ssh_pass=123456
[web]
web01
主机清单的配置方法:
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html