补充介绍 echo 以及双引号跟单引号的区别
echo `date +%F`
echo $(date +%F)
a=10
echo '$a'
$a
echo "$a"
10
playbook需要严格的遵循yaml规范
yaml基本规范
- 冒号后面必须有空格
- 横线后面必须要空格
- 严格保持对齐
- 等号前面不能有空格?
字典 key:value
列表 [] -(列表有两种表示方式,一般使用第一种-方式表示)
- alex
- wusir
- yantao
- yuchao
[alex,wusir,yantao,yuchao]
playbook格式
ansible-playbook -h(查看帮助信息)
比较重要的一些参数:
Usage: ansible-playbook [options] playbook.yml [playbook2 ...]
-C, --check #白跑,执行但是不会有结果
--list-hosts #列出符合的主机
-f FORKS, --forks=FORKS #做并发
--syntax-check #检查语法
-k, --ask-pass #输入密码
文件内容写入格式:
单个playbook
- hosts: web
remote_user: root
tasks:
- name: createuser
user: name=alex20 home=/opt/alex20 uid=4000
多个playbook
- 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
幂等性 不管执行多少次,得到的结果都是一样的
- 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
- hosts: db
tasks:
- name: copyfile
copy: src=/etc/fstab dest=/tmp/fs
五种传参方式
第一种:
第二种:
第三种:
第四种:
第五种:
优先级 -e > playbook > hosts
setup
参数名字
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 #系统名字
tags 打一个标签,可以指定单独的标签运行
handlers 被触发的任务,notify 触发
template 可以动态的传递参数,在setup获取
绝对路径的写法
相对路径的写法
mv redis.conf{,.j2} = mv redis.conf redis.conf.j2 (两边一样的简写方法)
yy 复制一行
# yy 复制多行(yy前加参数代表复制多行)
p 粘贴
dd 删除一行
# dd 删除多行(dd前加参数代表删除多行)
d$ 从当前位置删除到结尾
when 判断
with_items 循环
嵌套循环