参考来源:http://www.yunweipai.com/34676.html
Ansible基于多模块管理,常用Ansible模块:command(默认)、shell、script、yum、copy、File、async、docker、cron、mysql_user、ping、sysctl、user、acl、add_host、easy_install、haproxy等。
Ansible批量管理之前,需将被管理的服务器IP列表添加至/etc/ansible/hosts文件中,可自定义分组。
Ansible常用参数如下:
-v //打印详细模式;
-i //指定hosts文件路径;
-f //指定fork开启同步进程的个数,默认5;
-m //指定module名称,默认模块command;
-a //module模块的参数或者命令;
-k //输入远程被管理端密码;
–sudo //基于sudo用户执行;
-K //提示输入sudo密码与sudo一起使用;
-u //指定移动端的执行用户;
-C //测试执行过程,不改变真实内容,相当于预演;
-T //执行命令超时时间,默认为10秒;
--version //查看Ansible软件版本信息
//#若多台远程主机用户名密码不一致时,可在hosts配置文件中做配置;
[database]
192.168.1.1 ansible_user=root ansible_password=Pan@#123
192.168.1.2 ansible_user=root ansible_password=Pass!@#123
//#也可做免密,(推荐)
ssh-keygen //生成秘钥文件,家目录.ssh下会生成锁id_rsa.pub、秘钥id_rsa两个文件
ls /root/.ssh/id_rsa* //秘钥存放路径
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.2 //拷贝锁文件至被控端
- ping模块,用于判断远程客户端是否在线。
Ansible批量管理基于SSH,远程执行命令时需要用户名密码,也可以加入 '-k' 参数手动输入密码,或基于ssh-keygen免秘钥。
ansible all -k -m ping //all表示hosts列表中所有主机,也可指定具体IP或分组
ansible panwei -k -m ping //panwei表示hosts列表中的一个分组
ansible 10.226.35.58 -k -m ping //表示只ping10.226.35.58这一个主机
ansible panwei -k -m ping -i /etc/ansible/hosts //-i表示指定hosts文件路径,默认可省略
- command模块,为ansible默认模块,用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作。
command为默认模块,可忽略-m选项。
# command模块使用详解:
chdir //执行命令前,切换到目录;
creates //当该文件存在时,则不执行该步骤;
executable //自版本2.4起删除了executable参数,请改用shell模块;
free_form //需要执行的脚本;
removes //当该文件不存在时,则不执行该步骤;
warn //如果在ansible.cfg中存在告警,如果设定了False,不会警告此行。
# 举例
ansible all -k -m command -a "date" //表示查看所有主机系统时间
ansible panwei -k -m command -a "date" //表示只看panwei这个组的主机系统时间
ansible 10.226.35.58 -k -m command -a "date" //表示只看10.226.35.58的主机系统时间
ansible 10.226.34.15* -k -m command -a "df -Th" //#正则模式,表示指定多个或想要看的几个主机
ansible 10.226.34.159,10.226.35.58 -k -m command -a "df -Th"
ansible panwei -k -m command -a "df -Th" //#其他举例,指令需要双引号引起来
ansible panwei -k -m command -a "free -h"
ansible panwei -k -m command -a "ifconfig"
ansible panwei -k -m command -a "lscpu"
ansible panwei -k -m command -a "ping -c3 baidu.com"
ansible panwei -k -m command -a "yum install mariadb mariabd-server -y"
- copy模块,用于文件或者目录拷贝,支持文件、目录、权限、用户组功能。
# copy模块使用详解:
src //Ansible端源文件或者目录,空文件夹不拷贝;
content //用来替代src,用于将指定文件的内容,拷贝到远程文件内;
dest //客户端目标目录或者文件,需要绝对路径;
backup //拷贝之前,先备份远程节点上的原始文件;
directory_mode //用于拷贝文件夹,新建的文件会被拷贝,而老旧的不会被拷贝;
follow //支持link文件拷贝;
force //覆盖远程主机不一致的内容;
group //设定远程主机文件夹的组名;
mode //指定远程主机文件及文件及的权限;
owner //设定远程主机文件夹的用户名。
#举例:
ansible panwei -k -m copy -a 'src=/etc/passwd dest=/tmp/ mode=755 owner=root' //表示将ansible端源文件拷贝到目标主机,指令需要单引号引起来
ansible panwei -k -m copy -a 'content="Hello World" dest=/tmp/test.txt mode=755 owner=root' //
ansible panwei -k -m copy -a 'content="Hello World" dest=/tmp/test.txt mode=755 owner=root backup=yes' //
- yum模块,用于软件的安装、升级、卸载。
# YUM模块使用详解:
conf_file //设定远程yum执行时所依赖的yum配置文件
disable_gpg_check //安装软件包之前是否检查gpg key;
name //需要安装的软件名称,支持软件组安装;
update_cache //安装软件前更新缓存;
enablerepo //指定repo源名称;
skip_broken //跳过异常软件节点;
state //软件包状态,包括:安装(installed、present、latest)、卸载(absent、removed)。
#举例
ansible panwei -k -m yum -a "name=nginx,keepalived state=installed" //表示安装Nginx、keepalived,指令需要双引号引起来
ansible panwei -k -m yum -a "name=nginx,keepalived state=removed" //表示卸载Nginx、keepalived
ansible panwei -k -m yum -a "name=nginx,keepalived state=installed disable_gpg_check=no" ////表示安装Nginx、keepalived,不检查key
- file模块,用于对文件的创建、删除、修改、权限、属性的维护和管理。
# File模块使用详解:
src //ansible端源文件或者目录;
follow //支持link文件拷贝;
force //覆盖远程主机不一致的内容;
group //设定远程主机文件夹的组名;
mode //指定远程主机文件及文件及的权限;
owner //设定远程主机文件夹的用户名;
path //目标路径,也可以用dest,name代替;
state //状态包括:file、link、directory、hard、touch、absent;
attributes //文件或者目录特殊属性。
#举例
ansible panwei -k -m file -a "path=/tmp/wps/ state=directory mode=755" //表示给目标主机创建目录并赋755
ansible panwei -k -m file -a "path=/tmp/`date +%F` state=directory mode=755"
ansible panwei -k -m file -a "path=/tmp/wps/aaa.md state=touch mode=755" //表示给目标主机创建文件并赋755
ansible panwei -k -m file -a "path=/tmp/wps/ state=absent" //表示删除目标主机上指定的目录
- user模块,用于操作系统用户、组、权限、密码等操作。
# user模块使用详解:
system //默认创建为普通用户,为yes则创建系统用户;
append //添加一个新的组;
comment //新增描述信息;
createhome //给用户创建家目录;
force //用于删除强制删除用户;
group //创建用户主组;
groups //将用户加入组或者附属组添加;
home //指定用户的家目录;
name //表示状态,是否create、remove、modify;
password //指定用户的密码,此处为加密密码;
remove //删除用户;
shell //设置用户的shell登录环境;
uid //设置用户id;
update_password //修改用户密码;
state //用户状态,默认为present表示新建用户。
#举例
ansible panwei -k -m user -a "name=wps state=absent force=yes" //表示强制删除wps用户
- shell模块,用于远程客户端上执行各种Shell命令或者运行脚本,远程执行命令通过/bin/sh环境来执行,支持比command更多的指令.
# Ansible默认模块是command模块,也可修改默认模块为shell模块;在企业中推荐使用shell模块,它比command模块功能更强大;
# Shell模块使用详解:
chdir //执行命令前,切换到目录;
creates //当该文件存在时,则不执行该步骤;
executable //换用shell环境执行命令;
free_form //需要执行的脚本;
removes //当该文件不存在时,则不执行该步骤;
warn //如果在ansible.cfg中存在告警,如果设定了False,不会警告此行。
#举例
ansible panwei -k -m shell -a "ps -ef |grep sshd" //表示查看远程主机sshd进程
ansible 10.226.34.15* -k -m shell -a "/bin/bash /tmp/test.sh >>/tmp/test.log" //表示远程执行shell脚本,并输出日志
ansible panwei -k -m shell -a "mkdir -p data chdir=/tmp/ state=directory warn=no" //远程执行创建目录,执行之前切换到/tmp目录,屏蔽警告信息
ansible panwei -k -m shell -a "mkdir -p /data/sh/;cd /data/sh/;touch auto_install_nginx.sh;ls -l /data/sh/" //远程客户端执行多个命令时可用‘;’分割
- service模块,用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等。
# service模块使用详解:
enabled //是否开启启动服务;
name //服务名称;
runlevel //服务启动级别;
arguments //服务命令行参数传递;
state //服务操作状态,状态包括started, stopped, restarted, reloaded。
# 举例
ansible panwei -k -m service -a "name=nginx state=restarted" //远程重启nginx服务
- Script模块,在远程主机上运行ansible服务器上的脚本。
#举例
ansible panwei -k -m script -a "/data/test.sh"
....