博客网站做啥好网站功能模块图
yum 模块进阶
 
- name: install pkgs
hosts: webservers
tasks:
- name: install web pkgs # 此任务通过yum安装三个包
yum:
name: httpd,php,php-mysqlnd
state: present
# 根据功能等,可以将一系列软件放到一个组中,安装软件包组,将会把很多软件一起安装上。比如gcc、java等都是开发工具,安装开发工具包组,将会把它们一起安装。
[root@node1 ~]# yum grouplist # 列出所有的软件包组
[root@node1 ~]# yum groupinstall "Development Tools"
# 如果列出的组名为中文,可以这样进行:
[root@node1 ~]# LANG=C yum grouplist
ansible变量

-  
常用的facts变量
- ansible_all_ipv4_addresses:所有的IPV4地址
 - ansible_bios_version:BIOS版本信息
 - ansible_memtotal_mb:总内存大小
 - ansible_hostname:主机名
 
 
- facts变量是一个大的由
{}构成的键值对字典。在{}中,有很多层级的嵌套。可以通过参数过滤出第一个层级的内容。 
[root@pubserver ansible]# ansible web1 -m setup |less
自定义变量

-  
引入变量,可以方便Playbook重用。比如装包的playbook,包名使用变量。多次执行playbook,只要改变变量名即可,不用编写新的playbook。
 -  
ansible支持10种以上的变量定义方式。常用的变量来源如下:
- inventory变量。变量来自于主机清单文件
 - facts变量。
 - playbook变量。变量在playbook中定义。
 - 变量文件。专门创建用于保存变量的文件。推荐变量写入单独的文件。
 - 变量文本 > playbook变量 > inventory变量
 
 



firewalld模块


-  
- port:声明端口
 - permanent:永久生效,但不会立即生效
 - immediate:立即生效,临时生效
 - state:enabled,放行;disabled拒绝
 
 -  
防火墙一般默认拒绝,明确写入允许的服务。
 
template模块
-  
copy模块可以上传文件,但是文件内容固定
 -  
template模块可以上传具有特定格式的文件(如文件中包含变量)
 -  
当远程主机接收到文件之后,文件中的变量将会变成具体的值
 -  
template模块上传的文件,使用的语法叫Jinja2。
 - src:要上传的文件
 - dest:目标文件路径
 

进阶语法


触发执行任务
- 通过handlers定义触发执行的任务
 - handlers中定义的任务,不是一定会执行的
 - 在tasks中定义的任务,通过notify关键通知handlers中的哪个任务要执行
 - 只有tasks中的任务状态是changed才会进行通知。
 


when条件
-  
只有满足某一条件时,才执行任务
 -  
常用的操作符:
- ==:相等
 - !=:不等
 >:大于<:小于<=:小于等于>=:大于等于
 -  
多个条件或以使用and或or进行连接
 -  
when表达式中的变量,可以不使用
{{}} 
# 当dbs组中的主机内存大于2G的时候,才安装mysql-server
[root@pubserver ansible]# vim when1.yml
---
- name: install mysql-server
hosts: dbs
tasks:
- name: install mysql-server pkg
yum:
name: mysql-server
state: present
when: ansible_memtotal_mb>2048
# 如果目标主机没有2GB内存,则不会安装mysqld-server

