setup
ansible_all_ipv4_addresses # ipv4的所有地址 ansible_all_ipv6_addresses # ipv6的所有地址 ansible_date_time # 获取到控制节点时间 ansible_default_ipv4 # 默认的ipv4地址 ansible_distribution # 系统 ansible_distribution_major_version # 系统的大版本 ansible_distribution_version # 系统的版本号 ansible_domain #系统所在的域 ansible_env #系统的环境变量 ansible_hostname #系统的主机名 ansible_fqdn #系统的全名 ansible_machine #系统的架构 ansible_memory_mb #系统的内存信息 ansible_os_family # 系统的家族 ansible_pkg_mgr # 系统的包管理工具 ansible_processor_cores #系统的cpu的核数(每颗) ansible_processor_count #系统cpu的颗数 ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数 ansible_python # 系统上的python
ansible cache -m setup -a 'filter=*processor*' # 用来搜索
回顾正则
* 匹配数量,表示0或者多次 ? 匹配数量,表示0或者1次 +匹配数量,表示1次或更多 .除换行符意外一的所有字符 [132abc] 匹配内容 ()分组 {m} 次数,出现m次 {m,} 至少m次 {m,n}出现m-n次
条件判断
适用于:不同的系统,不同的版本,不同的环境,不同的用户
- hosts: db remote_user: root tasks: - name: createfile copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt when: a=="3" - name: cratefile copy: content="小弦切切如私语" dest=/tmp/a.txt when: a=="4"
****Ubuntu 安装包的方式apt-get
tags
- hosts: web tasks: - name: installnginx yum: name=nginx - name: copyfile copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf tags: copyfile - name: start service: name=nginx state=started
ansible-playbook -t copyfile p7.yml
循环with_items
一次性创建多个
- hosts: web tasks: - name: crateuser user: name={{item}} with_items: - ming20 - ming21 - ming22
- hosts: web tasks: - name: crateuser user: name={{item}} with_items: - ming30 - ming31 - ming32 - name: crategroup group: name={{item}} with_items: - wulaoshi20 - wulaoshi21 - wulaoshi22
嵌套循环
- hosts: web tasks: - name: crategroup group: name={{item}} with_items: - wulaoshi30 - wulaoshi31 - wulaoshi32 - name: createuser user: name={{item.name}} group={{item.group}} with_items: - {'name':alex40,'group':wulaoshi30} - {'name':alex41,'group':wulaoshi31} - {'name':alex42,'group':wulaoshi32}
template
jinja2
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=/etc/redis.conf dest=/etc/redis.conf - name: start service: name=redis state=started 配置文件: bind {{ ansible_default_ipv4.address }}
copy和template的区别:copy模块不替代参数,template模块替代参数
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=redis.conf dest=/etc/redis.conf - name: start service: name=redis state=started ps:写相对路径:在当前目录下新建一个templates目录,然后把文件放在里面
handlers
修改配置文件
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=redis.conf dest=/etc/redis.conf tags: copyfile notify: restart - name: start service: name=redis state=started handlers: - name: restart service: name=redis state=restarted
roles
roles文件夹
文件夹里面是要创建的每一个角色,每一个角色一个文件夹
每一个角色里面都有tasks(必须的),templates,files,handlers,vars目录
每个目录都要有main.yml文件,通过import_tasks来调用
其中templates文件夹中的文件可以通过相对路径来调用
yum installl -y ntp 同步时间 ll /etc/localtime 检查本地的时间是哪里的时间 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 更改本地时间为上海时间 uwsgi --http :8000 --module mysite.wsgi uwsgi启动django项目