ansible基础
特点:
模块化:调用特定的模块,完成特定任务;
基于Python语言实现,由Paramiko,PyYAML和Jinja2三个关键模块;
部署简单:agentless;
支持自定义模块;
支持playbook;
安装:
需要epel源
一个可用的epel源
cat /etc/yum.repos.d/cs.repo
[EPEL]
name=EPEL
baseurl=https://archives.fedoraproject.org/pub/archive/epel/7/x86_64/
enabled=1
gpgcheck=0
yum install ansible
配置文件:
/etc/ansible/ansible.cfg
主机清单:/etc/ansible/hosts
用到的命令:
ansible ansible-playbook ansible-doc
ansible命令格式:
ansible HOST_PATTERN -m MOD_NAME -a MOD_ARGS -f FORKS
HOST_PATTERN #要执行的主机,在/etc/ansible/hosts中定义,all为全部,格式可为单个主机(ip,域名),组
-m MOD_NAME #使用那个模块
-a MOD_ARGS #模块对应参数
-f FORKS #并行执行的主机数
ansible-playbook命令格式
ansible-playbook file.yaml #file.yaml为剧本文件
参数:
-C 干跑,不做任何改变
--list-hosts 展示要执行的主机
--list-tags 展示全部的标签
--list-tasks 展示要执行的任务
--syntax-check 对剧本进行语法检查,并不执行
-f FORKS 指定并行任务数
ansible-doc命令格式
ansible-doc -s MOD_NAME #查看指定模块的参数说明
ansible-doc -l #查看所有模块
ansible
常用模块:ping,yum,server,copy,command,script,cron,fetch,file,shell
ping 测试主机是否在线
yum 管理远程主机上的包,如安装卸载升级等
server 管理远程主机上的服务,如开启,停止等
copy 复制本地文件到远程主机上
参数:src dest content dest owner, group, mode,
command 在远程主机上执行命令并返回结果
script 在远程主机上执行本地的脚本
cron 在远程主机上执行定时任务
参数:minute, day, month, weekday, hour, job, name, state,
fetch 从远程主机获取文件
file 管理文件和修改文件属性,如属组,权限等
shell 在远程主机的shell进程下运行命令,支持管道等
setup: 收集有关远程主机的信息
template:基于模版方式生成一个文件复制到远程主机
示例
测试所有主机连通性
ansible all -m ping
指定ip安装httpd,版本最新
ansible 192.168.181.3 -m yum -a ‘name=httpd state=latest’
指定主机组,服务httpd,重启
ansible host1 -m server -a ‘name=httpd state=restarted’
指定主机组,复制本地文件到远程
ansible host1,host2 -m copy -a ‘src=/root/tmp.txt dest=/tmp/tmp.txt’
修改远程文件内容
ansible host2 -m copy -a ‘content=helloworld dest=/tmp/tmp.txt’
在指定主机上执行ifconfig
ansible node1.cn -m command -a ‘ifconfig’
在全部主机上执行本地脚本/root/cs.sh
ansible all -m script -a ‘/root/cs.sh’
在指定主机上执行定时任务
ansible 192.168.181.31 -m cron -a "minute=*/2 name=cron1 state=present job='echo hello>>/root/tmp.txt'"
在全部主机上拷贝文件到本地
ansible all -m fetch -a "src=/etc/fstab dest=/tmp"
在指定主机上修改文件权限
ansible 192.168.181.31 -m file -a 'path=/root/ls.txt mode=777'
在指定主机上执行脚本并返回结果
ansible 192.168.181.31 -m shell -a 'cat /etc/fstab|grep ^#'
ansilbe 192.168.181.31 -m setup
~]#cat tmp-cs.j2
hello {{ var-cs }}
ansible 192.168.181.31 -e var-cs=world -m template -a 'src=/root/tmp-cs.j2 dest=/tmp/tmp-cs' #no,需要使用ansible-playbook
Playbok核心元素
hosts 主机
tasks 任务列表
variables ansible预定义变量和自定义变量
templates 包含模版语法的文本文件
handlers 特定条件出发的任务
roles 角色,由hosts,tasks,variables,templates,handlers组成的角色,自定义或者系统角色
本文来自博客园,作者:赛博狗尾草,转载请注明原文链接:https://www.cnblogs.com/gpysir/p/18869853
浙公网安备 33010602011771号