Linux基础15-Ansible自动化运维
作者:互联网
安装Ansible软件包
yum -y install wget #下载wget工具
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里Base源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #下载阿里epel源
ansible --version #查看ansible版本信息
定义Ansible主机清单
ansible主配置文件:/etc/ansible/ansible.cfg
ansible默认清单文件:/etc/ansible/hosts
列出指定组内主机列表:ansible 组名 --list-host
ansible-doc命令介绍
ansible-doc #模块文档命令
常用选项:
-l #列出所有模块列表
-s #查看模块帮助信息
Ansible命令返回值的颜色表示:
绿色:代表对远程节点不进行相应修改,没有发生改变,命令执行成功了
黄色:代表对远程节点进行了相应修改,命令执行成功了
红色:代表你的命令执行失败或者是有异常
粉色:代表命令执行后发出的警告信息,可忽略
Ansible执行命令的方式
ad-doc:在命令行执行的命令(临时命令)
Playbook:将命令写入到Playbook剧本中
Ansible命令格式介绍
ansible 组名/主机 [-m 模块名] [-a 模块参数]
Ansible常用模块介绍
command模块
默认模块,用于远程执行命令
注意:特殊符号功能会失效
常用参数
chdir:此参数表示执行命令之前,会先进入到指定的目录中
creates:此参数表示文件如果存在于远程主机中,则不执行对应命令,如果不存在,才执行
removes:此参数表示文件如果存在于远程主机中,则执行对应命令,如果不存在,则不执行
shell模块
远程执行命令,通过/bin/bash程序处理命令
常用参数
cmd:此参数指定用于执行的命令(用于Playbook剧本中)
chdir、creates、removes与command模块作用一致
script模块
用于远程执行脚本,脚本存放在ansible主机本地,不需要拷贝至远程主机
常用参数:
chdir、creates、removes:与command作用一致
执行脚本举例:ansible 组名/主机 -m script -a '脚本'
yum模块
用于远程主机通过yum源管理软件包
常用参数
name:必须参数,用于指定需要管理的软件包名字
state:用于指定软件包的状态
present:此状态为默认值,表示安装软件包
installed:此状态表示安装软件包
latest:此状态表示安装最新版本软件包
removed:此状态表示删除对应软件包
absent:此状态表示删除对应软件包
service模块
用于管理远程主机的服务
常用参数:
name:此参数用于指定需要操作的服务名称
state:此参数用于指定服务的状态
started:此状态用于启动服务
restarted:此状态用于重启服务
stopped:此状态用于停止服务
enabled:此参数用于指定是否将服务设置为开机启动项,yes开机启动,no不会开机启动
copy模块
用于将文件复制到远程主机
常用参数:
src:此参数用于指定需要拷贝的文件或目录
dest:此参数用于指定文件将拷贝到远程主机的哪个目录中,dest为必须参数
将本地/tmp/test.txt文件拷贝至ftp组内主机的/avr/ftp目录下
ansible ftp -m copy -a 'src=/tmp/test.txt dest=/var/ftp/'
content:此参数当不使用src指定拷贝的文件时,可使用content直接指定文件内容,src与content必有其一,否则会报错
使用content参数在远程主机直接创建文件并写入内容
ansible ftp -m copy -a 'content="hello" dest=/var/ftp/test1'
force:此参数当远程主机的目标路径中已存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,yes覆盖,no不覆盖
ansible ftp -m copy -a 'src=/tmp/test1 dest=/var/ftp/test1 force=no'
backup:此参数当远程主机的目标路径中已存在同名文件,并与ansible主机中文件内容不同时是否对远程主机的文件进行备份,yes备份
ansible ftp -m copy -a 'src=/root/test1 dest=/var/ftp backup=yes'
owner:此参数指定文件拷贝到远程主机后的属主
ansible ftp -m copy -a 'src=/root/test2 dest=/var/ftp/ owner=ftp'
group:此参数指定文件拷贝到远程主机后的属组
ansible ftp -m copy -a 'src=/root/test3 dest=/var/ftp/ owner=ftp group=ftp'
mode:此参数指定文件拷贝到远程主机后的权限
拷贝test4文件到远程主机,并指定属主为ftp用户,所属组为ftp用户基本组,并指定权限为0744
ansible ftp -m copy -a 'src=/root/test4 dest=/var/ftp/ owner=ftp group=ftp mode=0744'
Ansible剧本Playbook
需遵循YAML语法格式编写,文件名以".yaml"或".yml"作为文件名后缀
核心元素
hosts:执行的远程主机列表
tasks:任务集
variables:内置变量或自定义变量在playbook中调用
tempaltes模板,可替换文件中的变量并实现一些简单逻辑的文件
handles和notify结合使用,由特定条件触发的操作,满足条件才执行
tags标签,指定某条任务执行,用于选择运行playbook中的部分代码
使用ping模块测试远程主机联通性,并在远程主机创建目录
vim ping_websrvs.yml
--- #第一行:playbook剧本以---开头表明yaml格式文件
- hosts: websrvs #第二行:使用”- “作为开头,”- “表示一个列表项,”- “后面使用hosts关键字指定要操作的主机组名,(注意:横杠后面有空格)表示我要在websrvs这组主机上进行操作,在YAML语法中,键值对需要使用冒号作为分隔,而且冒号后边必须还要有一个空格作为分隔
remote_user: root #第三行:remote_user关键字可以指定在进行远程操作时使用哪个用户进行操作
tasks: #第四行:tasks关键字是用来指定要执行哪些操作任务,之后的行都属于tasks任务列表中的任务,每个任务都以”- “开头,每个任务都有自己的名字,任务名使用name关键字进行指定
- name:ping websrvs
ping:
-name: mkdir dir test
shell:
cmd: mkdir /test
运行剧本需要使用'ansible-palybook'命令
ansible-playbook ping_websrvs.yml
--syntax-check 用于检测playbook语法是否正确,如果正确只返回playbook名称
ansible-playbook --syntax-check ping_websrvs.yml
--check 用于模拟执行playbook
ansible-playbook --check ping_websrvs.yml
标签:ftp,15,运维,主机,指定,ansible,Linux,此参数,远程 来源: https://www.cnblogs.com/lxw0829/p/16226010.html