文章目录1.ansible概述1 .部署ansible服务2.1测试ansible服务3. ansible命令语法和模块详细信息3.1命令语法3.2模块详细信息4.1通用基础配置4.2名称类似主机定义4.3Inventory中变量4.1
1.ansible介绍
ansible是一种新出现的自动化运输工具,基于python开发,汇集了许多运输工具(puppet、cfengine、chef、func、fabric )的优点,包括批量系统配置、批量程序部署和
ansible可以同时管理Redhat系统的Linux、Debian系统的Linux和windows主机。 管理节点仅在运行脚本时与远程主机连接,没有特殊的同步机制,因此停电等异常不会影响ansible
ansible基于模块运行,本身没有批量部署能力,而是真正拥有批量部署的ansible运行的模块。 ansible提供了一个简单的框架。主要包括:
连接插件连接插件:负责与被监视方进行通信的主机库存:指定操作的主机是在配置文件中定义监视的主机的各种核心模块。 command模块、自定义模块通过插件实现记录日志邮件等功能。 playbook :部署2.Aamand模块,如果方案执行多个任务,则可以让两个非必需的节点同时执行多个任务
安装yum-yInstallEpel-Release#Epel源代码,通过在线源代码访问配置依赖环境
yum-yinstallansible http://www.Sina.com /
ls/etc/ansibleansible.CFG # ansi ble配置文件hosts#ansible的主仓库。 roles#角色文件,包含有关要管理的远程主机的信息。 playbook 安装ansible软件
vi /etc/ansible/hosts##可以单独添加IP地址,也可以自定义主机池名称以调用所有相关主机[web服务器]#主机池名称192.168.20
ssh-keygen -t rsa#建立不对称密钥#此时交互设置密钥存储路径,并设置私钥ssh-copy-id root@192.168.20.10#,将公钥传递给三台主机。 ssh-copy-id root @ 192.168.20.100 #此时,交互输入对方主机的用户密码。 表示要使用配置为(此时,作为对方根登录)的无交互式代理的ssh-add#添加个人私钥。 #现在,交互输入以前设置的个人私钥2.1以测试ansible服务ansible all -a 'date '
3. ansible指令语法和模块详细信息3.1指令语法基本语法
ansible主机/ip -m模块-a“参数”主机id/IP在管理主机文件中定义的主机id (主机池)或特定主机IP地址(如果为all ),则为所有主机
模块:对于ansible中的各种模块,如果未指定(-m ),则默认使用command
参数:管理命令,根据具体模块确定命令语法
3.2模块详细信息此时生成三个主要文件在/etc/ansible下
ansible-doc -l#列出所有已安装的模块,然后按q退出查询ansible-doc -s模块名称#查询指定模块的说明信息和操作1.command模块
通常用于执行一个linux命令
ansi ble 192.168.20.100-m command-a ' date ' ansiblewebservers-a ' id ' #没有m指定模块,默认情况下使用command,用户信息2.2
用于设置计划任务
ansi ble 192.168.20.10-mcron-a ' minute=' */1 ' job='/usr/QJ dhb/echo hello/opt/test.txt ' name=' tete 时间: minute、hour、day、weekday、mooday
为了管理用户
创建ansi ble 192.168.20.10-muser-a ' name=' use r01 ' ' #用户use r01 ansi ble 192.168.20.10-muser-a
'name="user01" state=absent'#删除用户user01ansible 192.168.20.10 -m user -a 'name="user01" uid=1002 group=user01'#设置user01的uid和属组4.group模块
用户管理组
5.copy模块
复制文件、目录及写入内容至文件
6.file模块
管理文件、目录及创建软连接
7.ping模块
测试与被控主机的网络连接状态
8.yum模块
管理软件
9.service模块
管理服务
9.shell模块
执行多条linux指令、并可以使用重定向、追加符号
特殊参数:
chdir:指定工作目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中,等于cd命令
creates:指定一个文件,当指定的文件存在时,就不执行对应的命令
removes:使用此参数指定一个文件,当指定的文件不存在时,就不执行对应的命令
10.script模块
执行本地的脚本,使所有被控主机执行脚本操作(脚本只需存在ansible管理节点,被控主机无需存在该脚本)
11.setup模块
获取主机所有信息
可配合检索命令,过滤出主机的资源占用、地址信息等所需信息
ansible默认的主机清单是/etc/ansible/hosts文件
主机清单可以手动设置,也可通过Dynamic inventory动态生成
一般主机名使用FQDN
FQDN:完全合格域名:主机名+域名,例:www.baidu.com
1.主机变量
www.aa.com http_port=80 maxRequestsChild=100#定义该主机http端口号及最大请求数2.组变量
定义主机名为一个变量,可直接调用
3.组嵌套
定义多个组在同一个组内
目标主机的python路径,适用于的情况:系统中有多个python。或者命令路径不是/usr/qjdhb/pythonansible__interpreter 这里的可以是ruby或perl或者其他语言的解释器,作用和-
ansible_python_interpreter类似ansible_shell_executable
这将设置ansible控制器将在目标机器上使用的shell,覆盖ansible.cfg中的配置,默认为/qjdhb/sh