Usage: ansible-playbook [options] playbook.yml [playbook2 ...]
(代码执行格式)
optons: -C, --check #白跑,执行但是不会有结果
--list-hosts #列出符合的主机
-f FORKS, --forks=FORKS #做并发
--syntax-check #检查语法
-k, --ask-pass #输入密码
补充:
① vi 的快捷操作
yy 复制一行
# yy 复制多行
p 粘贴
dd 删除一行
# dd 删除多行
d$ 从当前位置删除到结尾
②echo的操作
echo `date +%F`
echo $(date +%F)
a=10
echo ‘$a‘
$a
echo "$a"
10
ansible_all_ipv4_addresses #所有的ipv4地址 ansible_all_ipv6_addresses #所有的ipv6地址 ansible_architecture #系统的架构 ansible_date_time #系统时间 ansible_default_ipv4 #默认的ipv4地址 address ip地址 alias 网卡名称 broadcast 广播地址 gateway 网关 netmask 子网掩码 network 网段 ansible_default_ipv6 #默认的ipv6地址 ansible_device_links #系统的磁盘信息 ansible_distribution #系统名称 ansible_distribution_file_variety #系统的基于公司 ansible_distribution_major_version #系统的主版本 ansible_distribution_version #系统的全部版本 ansible_dns #系统的dns 默认udp 端口53 ansible_domain #系统的域 ldap ipv4 #ipv4地址 ansible_env #系统的环境 ansible_fqdn #系统的完整主机名 ansible_hostname #系统的简写主机名 ansible_kernel #系统的内核版本 ansible_machine #系统的架构 ansible_memtotal_mb #系统的内存 ansible_memory_mb #系统的内存使用情况 ansible_mounts #系统的挂载信息 ansible_os_family #系统家族 ansible_pkg_mgr #系统的包管理工具 ansible_processor #系统的cpu ansible_processor_cores #每颗cpu的核数 ansible_processor_count #cpu的颗数 ansible_processor_vcpus #cpu的个数=cpu的颗数*每颗cpu的核数 ansible_python #系统python信息 ansible_python_version #系统python的版本 ansible_system #系统名字
字典 key:value
- alex
- wusir
- yantao
- yuchao
[alex,wusir,yantao,yuchao]
仅创建一个用户
- hosts: web remote_user: root (默认是root) tasks: - name: createuser user: name=alex20 home=/opt/alex20 uid=4000
执行时的代码为:
ansible-playbook 文件名.yml
创建一个用户 和 复制文件
- hosts: web remote_user: root tasks: - name: createuser user: name=alex20 home=/opt/alex20 uid=4000 - name: copyfile copy: src=/etc/fstab dest=/tmp/fs
执行时的代码:
ansible-playbook 文件名.yml
优先级:
-e > playbook > hosts
①第一种方式
把要创建的用户名 在执行文件时传入
- hosts: web tasks: - name: create{{user}} user: name={{user}}
执行时的代码: ansible-playbook -e user=wusir20 p3.yml
②第二种方式
修改 hosts 配置文件 加入 user
hosts文件中:
[web] 192.168.226.[101:102] user=alex30 192.168.226.104 user=alex100
在playbook 文件中:
- hosts: web
tasks:
- name: create{{user}}
user: name={{user}}
直接执行playbook文件:
ansible-playbook 文件名.yml
③第三种方式
修改hosts配置文件:
[web:vars]
user=alex31
在playbook 文件中内容如上
直接执行playbook文件:
ansible-playbook 文件名.yml
④第四种方式
修改playbook文件
- hosts: web vars: - user: alex32 tasks: - name: create{{user}} user: name={{user}}
直接执行playbook文件:
ansible-playbook 文件名.yml
⑤第五种方式
修改 playbook文件
- hosts: web tasks: - name: yum yum: name=bc #下载bc计算组件 - name: sum shell: echo 11+22|bc register: user # 注册成变量,返回结果为后面使用
- name: create{{user.stdout}} user: name=alex{{user.stdout}}
直接执行playbook文件:
ansible-playbook 文件名.yml
在playbook 中加入标签
- hosts: web tasks: - name: install yum: name=redis - name: copyfile copy: dest=/etc/redis.conf src=/etc/redis.conf tags: copy - name: start service: name=redis state=started
执行时的代码(仅运行标签所在的一项): ansible-playbook -t copy p7.yml
在 playbook 文件中加 notify;和 handlers
- hosts: web tasks: - name: install yum: name=redis - name: copyfile copy: dest=/etc/redis.conf src=/etc/redis.conf tags: copy notify: restart #改变时触发 - name: start service: name=redis state=started handlers: #触发项 - name: restart service: name=redis state=restarted
执行时的代码(仅运行标签所在的一项):
ansible-playbook -t copy p7.yml
可以进行动态替换
用法,作用和copy一样
①绝对路径
利用收集的信息
在playbook 文件中
- hosts: web tasks: - name: install yum: name=redis - name: copyfile template: dest=/etc/redis.conf src=/etc/redis.conf #将copy直接替换 tags: copy notify: restart - name: start service: name=redis state=started handlers: - name: restart service: name=redis state=restarted
在 redis.conf 文件中(利用收集的信息保证安全)
执行时的代码(仅运行标签所在的一项): ansible-playbook -t copy p7.yml
copy完成之后就引用了收集的信息
②相对路径
mv redis.conf{,.j2} = mv redis.conf redis.conf.j2
- hosts: web tasks: - name: install yum: name=redis - name: copyfile template: dest=/etc/redis.conf src=redis.conf.j2 tags: copy notify: restart - name: start service: name=redis state=started handlers: - name: restart service: name=redis state=restarted
在当前目录下创建一个templates的目录,
把要copyd的文件放在 templates 文件下
就可以使用相对路径
执行时的代码(仅运行标签所在的一项): ansible-playbook -t copy p7.yml
- hosts: web tasks: - name: copyfile copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt when: ansible_distribution_major_version=="7" #利用收集的信息 - name: copyfile copy: content="小弦切切如私语" dest=/tmp/a.txt when: ansible_distribution_major_version=="6"
执行时的代码: ansible-playbook p7.yml
- hosts: web tasks: - name: copyfile copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt when: user=="4" - name: copyfile copy: content="小弦切切如私语" dest=/tmp/a.txt when: user=="3"
执行时的代码:
ansible-playbook -e user=4 p3.yml
只执行第一项
①.循环
创建多个用户
- hosts: web tasks: - name: createuser user: name={{item}} with_items: - alex50 - wusir50 - taibai50
执行时的代码: ansible-playbook p7.yml
创建多个用户 和 多个组(创建完用户再创建组)
- hosts: web tasks: - name: createuser user: name={{item}} with_items: - alex51 - wusir51 - taibai51 - name: creategroup group: name={{item}} with_items: - alex60 - wusir60 - taibai60
执行时的代码: ansible-playbook p7.yml
②嵌套循环
创建用户并添加属组
- hosts: web tasks: - name: crateuser user: name={{item.name}} group={{item.group}} with_items: - {"name":alex52,"group":alex60} - {"name":wusir52,"group":wusir60} - {"name":taibai52,"group":taibai60}
执行时的代码: ansible-playbook p7.yml
原文:https://www.cnblogs.com/sc-1067178406/p/10826862.html