ansible使用一目了然
- 一、ansible使用
- ansible中文官网
- 通用命令
- /etc/ansible/hosts 的配置模版
- 命令举例
- 二、ansible功能模块--ansible的进阶
- 常用功能模块
- setup:搜集系统信息
- Ping:测试网络连通性
- File:文件属性设置
- copy:将文件复制到远程主机
- shell:在远程机子上执行shell命令
- script:本地脚本文件,到远程主机上运行一次
- script和shell运行脚本的区别
- 其他功能模块
- 三、ansible-playbook的使用
- 例子
一、ansible使用
ansible中文官网
通用命令
ansible -i [文件路径/文件名称] [选择使用的组别文件] -m [使用的ansible功能] -a “[跟着的文本参数]” -f [并发数(默认5)]
/etc/ansible/hosts 的配置模版
设置test 组,ip为192.168.1.1到192.168.1.128
[test]
192.168.1.[1:128]
#[组别名]
#ip地址或者ip网段
命令举例
#解释:选择 /etc/ansible/hosts 配置文件中的 test 组,
#调用ansible的 shell 功能模块,
#并对 test 组的所有主机使用 touch /home/test.txt 命令,并发数为5
1、'ansible -i /etc/ansible/hosts test -m shell -a "touch /home/test.txt" -f 5'
#默认主机组别配置文件为 ***/etc/ansible/hosts***,所以1命令等同于2命令
2、'ansible test -m shell -a "touch /home/test.txt" -f 5'
学到这里已经够使用ansible了,只要你对shell命令和脚本编写很熟悉,用shell模块和script模块即可。
二、ansible功能模块–ansible的进阶
常用功能模块
shell,ping,copy,script,setup
setup:搜集系统信息
用法: ansible 组别 -m setup -a “filter=ansible*” //支持正则过滤
Ping:测试网络连通性
用法: ansible 组别 -m ping
File:文件属性设置
常用:统一创建目录
- force :需要在两种情况下强制创建软连接,一种是源文件不存在,但之后会建立。另一种是目标软连接已存在,需要先取消之前的软链,在创建新的软链, yes|no两个选项
- group:定义文件/目录属于哪个组
- mode:制定文件的权限
- owner:定义文件/目录的属主
- path:必选项,定义文件/目录的路径
- recurse:定义目录的所有文件的属性
- src:被链接的源文件,只应用于state=link的情况
- dest:被链接到的路径,只应用于state=link的情况
- state:
directory:如果目录不存在就创建目录
file:即使文件不存在,也不会被创建
link:创建软连接
hard:创建硬链接
touch:如果文件不存在就创建一个新的文件,如果存在就更新最后修改时间
absent:删除
用法:
ansible 组名 -m file -a “src=路径 dest=路径 state=状态 ”
创建软连接
ansible local -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"
取消软连接
ansible local -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=absent"
创建目录
ansible local -m file -a "path=/etc/ansible/xhb group=root owner=root mode=700 state=directory"
copy:将文件复制到远程主机
- backup:在覆盖之前先备份 yes|no 是否先备份
- content:用户代替src ,可以直接制定文件的值
- dest:必选项要将文件复制到远程主机的绝对路径
- directory_mode: 递归设定目录的权限,默认为系统默认权限
- force:如果目标已经存在该文件,yes为强制覆盖,no为取消复制。默认为yes
- others:所有file的选项都可以在这里用
- group:复制到远程主机后给他的组别
- mode:复制后给予的权限
- owner:复制到远程后,指定的用户
- src:可绝对可相对,目录后‘/’来结尾复制目录中的文件,不包含目录,没有/则将目录一块复制
用法:将本地文件‘/etc/ansible/hosts复制到远程服务器,设置用户和组以及文件权限
ansible testx -m copy -a “src=/etc/ansible/hosts dest=/home/hosts group=root owner=root mode=777”
shell:在远程机子上执行shell命令
用法:可以使用shell指令
- chdir:执行之前先cd到指定目录
- creates:指定一个文件,当这个文件存在,则该命令不执行
- removes: 指定一个文件,如果文件不存在,不执行
- executable:切换shell来执行命令,需要使用命令的绝对路径
- free_from:填写本地脚本的路径 // 可以不用
ansible testx -m shell -a “命令”
ansible testx -m shell -a “sh 本地脚本文件” #远程到服务器上运行服务器本地的脚本
script:本地脚本文件,到远程主机上运行一次
仅仅运行脚本,ansible端有脚本
ansible 组名 -m script -a “脚本”
#运行的是执行ansible命令的服务器上的脚本
script和shell运行脚本的区别
1、ansible 组名 -m script -a “脚本”
2、ansible testx -m shell -a “sh 本地脚本文件”
1命令是类似将一份脚本发送到目标服务器中运行,运行结束后删除脚本。
2命令是目标服务器有该脚本才能运行,没有就不运行。
其他功能模块
这里就不详细介绍其他的模块了,有兴趣请前往官网查询
command:在远程主机上执行命令
cron:计划任务管理
yum:软件安装包管理
service:系统服务管理
group:系统用户组管理
user:系统账号目录管理
stat:获取远程文件信息
mount:配置挂载点
fetch:文件拉取模块,将远程主机中的文件拷贝到本机中
synchronize:将主控方的/root/a目录推送到指定节点的/tmp目录
get_url:将某个url文件下载到被控节点的某个位置
hostname:用来修改主机的名称
wait_for:每一个事件发生或者处理完后在进行下一个事件的处理
三、ansible-playbook的使用
用法: ansible-playbook 文件名.yml –-tags=”标签名称1,标签名称2”
---
- hosts: 组名
remote_user: 用户名
//申明变量的模块
vars:
- 变量名: 值
- test: nihao
//执行命令的模块
tasks:
//类似 -m 需要装载的ansible -a “-a后的内容”
- name: 描述
需要装载的ansible功能: “-a后的内容”
//判断条件为真执行调用变量
- name: test
shell: “echo {{test}}”
when: (条件1 and 条件2) or (条件3)
tags:
- always //不管有没有指定标签名称都会执行name为test的模块
//循环执行调用变量
例子
---
- hosts: test
gather_facts: f #开启debug
remote_user: root #用户root
tasks:
- name: ifconfig test #命名
shell: 'ifconfig | grep 190' #调用shell模块,执行'ifconfig | grep 190'命令
register: ifvar #将debug的内容传到变量ifvar
tags: only #标签only,标签命名随意
- name: echo #命名
debug: var=ifvar #显示debug
tags: only1 #标签only1
- name: ls dest
shell: 'ls'
register: lsxhb
tags: always
- name: echo
debug: var=lsxhb
tags: always