ansible常用模块,定义分组

前言:ansible是一个部署到远程主机的自动化运维工具

ansible的组成1.host inventory  主机清单
              2.playerbook  剧本(配置文件)
              3.module模块  实现一个个功能的小程序
              4.plugins插件:依附于ansible 的一个小软件,实现某个小功能
ansible底层使用ssh协议,默认不需要再安装

一、建立免密通道同时控制多部机器

我这里使用了三台机器,两台做服务器,如果不会建立免密通道的可以参考

https://blog.csdn.net/wsy_miao/article/details/107323362

二、进入配置文件,创建分组,定义控制的主机。

#[root@ansible db_passwd]# cd /etc/ansible
#[root@ansible db_passwd]# vim hosts

ansible常用模块,定义分组_第1张图片

三、常用命令

#批量建立文件夹以及删除对所有分组的服务器进行操作
[root@ansible ansible]# ansible all -m shell -a "mkdir /lianxi-7-14"
#对wangdb分组在根目录下建立lianxi2020  -f 5 启动5个线程
[root@ansible ansible]# ansible sanchuangdb -f 5  -m shell -a "mkdir /lianxi2020"

 对服务器进行的操作,可以查看日志
[root@ansible ansible]# tail -f /var/log/messages

四、常用模块

1.copy模块

   从本地copy文件分发到目标节点主机路径
   src= 源文件路径           dest= 目标路径
  注意:src= 路径后面带/ 表示带里面的所有内容复制到目标目录下,不带/是目录递归复制过去
# 从本地de/lianxi/a.sh文件分发到目录主机/root

#all可以改成你要控制的分组名,
[root@ansible lianxi]# ansible all -m copy  -a "src=/lianxi/a.sh dest=/root mode=644"

2.fetch模块
  从远程主机的/etc/passwd拉取文件到本地/lianxi/db_passwd
 # 直接复制文件夹

[root@ansible lianxi]# ansible wangdb -m fetch -a"src=/etc/passwd dest=/lianxi/db_passwd"

3.command模块

在远程主机上执行命令,属于裸执行,非键值对显示;不进行shell解析

命令模块 适合使用简单的命令 无法支持"<",">","|",";","&"等符号
# 在远程主机上执行命令

4.shell模块

由于commnad只能执行裸命令(即系统环境中有支持的命令),至于管道之类的功能不支持,shell模块可以做到
# 显示ip地址并过滤

[root@ansible db_passwd]# ansible all -m  shell -a "ip add|grep ens33"

5.file模块

设置文件属性(创建文件)也可以删除文件
常用参数: path目标路径 state directory为目录,link为软件链接
group 目录属组 owner 属主等, 其他参数通过ansible-doc -s file 获取

[root@ansible ~]# ansible all -m file -a "path=/tmp/sanchuang state=directory"
#设置文件属性

[root@ansible db_passwd]# ansible doc file
#查看命令使用手册

6.计划任务cron模块

对目标生成计划任务

# 创建计划任务名字为 wang_shell
[root@ansible db_passwd]# ansible all -m cron -a "minute=30 hour=17 job='bash /root/a.sh' name=wang_shell"
#在每天的17.30执行/root/a.sh脚本内容

 #查看创建的计划任务
 

[root@localhost ~]# crontab -l

#Ansible: wang_shell
30 17 * * * bash /root/a.sh

7.yum 模块

yum安装软件包的模块,安装多个可以使用逗号隔开
enablerepo,disablerepo表示启用与禁用某repo库
安装latest  卸载 absent
    #批量删除tree软件

ansible all -m yum  -a"name=tree state=absent"
# -f 2  使用两个线程
ansible all  -f 2 -m yum  -a"name=tree state=absent"


8.service服务器管理模块

    name:服务名
    state:服务状态
    enabled: 是否开机启动 true|false
    runlevel: 启动级别 (systemed方式忽略)

 扩展:如何查看服务当前的状态及是否开机启动?

    [root@www tmp]# service nginx status
    Redirecting to /bin/systemctl status  nginx.service
    ● nginx.service - The nginx HTTP and reverse proxy server
       Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)

        enabled 说明开机启动

       Active: active (running) since 四 2018-09-06 15:57:21 CST; 3s ago
        running 说明现在是启动的   dead 表示没有启动

#关闭nginx服务
[root@ansible ~]# ansible  all -m service  -a "name=nginx state=stopped enabled=true"

#控制nginx启动和重新启动
[root@ansible ~]# ansible  all -m service  -a "name=nginx state=started enabled=true"
[root@ansible ~]# ansible  all -m service  -a "name=nginx state=restarted enabled=true"

你可能感兴趣的:(ansible常用模块,定义分组)