参考来源: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"

 

....