有事您Q我

Ansible常用模块

Ansible常用模块

一、基本介绍

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信;

(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

1、使用ansible的ping查看远程主机网络是否正常。

首先需要把远程主机的IP加入到ansible的主机清单中(/etc/ansible/hosts),使用命令ansible IP -m ping -k由于没有使用密钥验证则需要输入密码否则失败。

2、基于key验证实现,使用ssh连接一下远程主机。在~目录中进入.ssh文件夹,查看文件known_hosts看看是否有被控制的主机密钥。

ssh-keygen生成密钥,ssh-copy-id IP 把密钥复制到远程主机。

二、Ansible常用模块

1、command模块:在远程主机执行命令,默认模块,可以忽略 -m选项。

ansible dd -m command -a 'systemctl start vsftpd' 在主机清单dd组中的主机执行启动vsftpd服务。

ansible dd -a 'removes=/ets/fs cat /etc/fstab' 如果removes=/etc/fs文件不存在则不执行后面的命令cat /etc/fstab

ansible dd -a 'creates=/etc/fs cat /etc/fstab' 如果creates=/etc/fs文件不存在则执行后续命令cat /etc/fstab

ansible dd -a 'chdir=/boot ls' chdir=/boot 进入远程主机的 /boot 目录,然后执行 ls

ansible dd -a '/root/1.sh' 执行远程主机上的脚本。(脚本必须加 #!/bin/bash )。

Linux命令getent passwd user 查看主机是否存在user用户

getent shadow user 查看用户是否配置了密码

ansible dd -a 'getent passwd xhl' 查看远程主机上是否存在 xhl 这个用户。

ansible dd -a 'useradd test1' 给远程主机上新建 tesat1 用户。

ansible dd -a 'echo 1234 | passwd --stdin test1' 给新建的用户配置密码。(command不支持管道符、重定向、变量等)此条配置不成功。

2、shell模块:不是默认模块,需要加 -m shell 选项。

ansible dd -m shell -a 'echo 1234 | passwd --stdin test1' 给远程主机上的用户test1配置密码。

ansible dd -m shell -a 'rm -rf /data/*' 删除/data/目录下的所有文件。

Shell模块支持普通Linux命令。

3、Script模块:运行脚本

ansible dd -m script -a 'chdir=/root/ansible host.sh' 在远程主机上运行本机的/root/ansible目录下的host.sh脚本。

4、coyp模块,从服务端推送数据至远程主机。

ansible dd -m copy -a 'src=/etc/selinux/config dest=/etc/selinux/config backup=yes mode=755 owner=root'

将本机上的/etc/selinux/config文件复制到远程主机的/etc/selinux/config下替换文件,并开启备份backup=yes并修改文件权限mode=0755并修改文件的所属组owner=root

ansible dd -m shell -a 'rm -f /etc/selinux/config.*'删除远程主机上的备份文件(不建议使用)。

ansible dd -m copy -a 'content="#!/bin/bash \n echo Hello \n" dest=/opt/tset.sh mode=0777'使用copy模块的content参数生成文件,推送到远程主机dest路径下,需要自定义命名文件名称。

5、fetch模块:从远程主机取数据至服务端,与copy相反(目录可先tar)。

ansible dd -m fetch -a 'src=/var/log/messages dest=/root/data'

src远程主机上的文件位置,dest远程主机的文件存放到本机的位置。

6、file模块:设置文件属性。

ansible dd -m file -a 'name=/data/f1 state=touch'

创建新文件state=touch,name、dest、path都可以指定文件路径和文件名。

ansible dd -m file -a 'name=/data/f1 state=absent'

删除刚刚创建的f1文件。

ansible dd -m file -a 'name=/data/dir state=directory'

创建文件夹dir。

ansible dd -m file -a 'name=/data/dir state=absent'

删除刚刚创建的dir文件夹。

ansible dd -m file -a 'src=/etc/fstab name=/data/fstab.link state=link'

创建链接文件,源文件为src,目标文件为name,state=link代表创建的是个链接文件。

ansible dd -m file -a 'name=/data/fstab.link state=absent'

删除远程主机上名称为name的文件。

mode

7、hostname模块:管理主机名

ansible dd -m hostname -a 'name=rooot'

更改主机名,在/etc/hostname下的主机名文件改了,建议自己手动也将/etc/hosts下的文件改一下。

CentOs6的主机名配置文件默认在/etc/sysconfig/network下。

8、cron:计划任务模块

ansible dd -m cron -a 'minute=* weekday=* job="/usr/bin/wall FBI warning" name=FBI_cron'

设置定时任务,每分钟广播告警FBI warning ,计划任务的名称name=FBI_cron。不写minute,mmonth,weekday默认’每‘的意思。

ansible dd -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=FBI_cron'

禁用计划任务,必须指定job与name。

ansible dd -m cron -a 'disabled=fase job="/usr/bin/wall FBI warning" name=FBI_cron'

解禁用计划任务disabled=yes/no也可以。

ansible dd -m cron -a 'job="/usr/bin/wall FBI warning" name=FBI_cron state=absent'

删除计划任务。

9、yum:模块包管理

ansible dd -m yum -a 'name=vsftpd'

使用yum模块安装vsftpd,state默认是安装installed。(远程主机必须配置了yum源)

ansible dd -m yum -a 'name=vsftpd state=absent'

卸载远程主机上的vsftpd软件,state后也可以跟removed。

ansible dd -m yum -a 'name=vsftpd,memcached,httpd'

在远程主机上安装多个软件用逗号隔开。

ansible dd -m yum -a 'name=vsftpd,memcached,httpd state=absent'

卸载远程主机上的多个软件。

RPM包安装

ansible dd -m copy -a 'src=/data/vsftpd.X dest=/root'

先把本地软件推送到远程主机上。

ansible dd -m yum -a 'name=/root/vsftpd.X'

再从本地安装软件。

ansible dd -m yum -a 'name=dstat update_cache=yes'

安装软件并更新缓存。

10、service模块:服务管理

ansible dd -m service -a 'name=vsftpd state=started enabled=yes'

将远程主机上的vsftpd服务启动,并设置为开机启动。

systemctl is-enabled vsftpd 查看vsftpd服务是否设置了开机启动。

ansible dd -m service -a 'name=vsftpd state=restarted'

重启vsftpd服务。

ansible dd -m service -a 'name=vsftpd state=stopped enabled=no'

停止vsftpd服,并取消开机启动。

11、user模块:管理用户

ansible dd -m user -a 'name=nginx shell=/sbin/nologin system=yes home=/var/nginx groups=root,bin uid=80 comment="nginx service"'

在远程主机上创建新用户,shell类型为nologin,sytem=yes设置为系统账号,home=/var/nologin家目录设置路径,辅助组=root,bin,指定uid为80,用户描述comment=nginx service。

ansible dd -m user -a 'name=nginx state=absent remove=yes'

删除用户,remove=yes并且删除用户的家目录。

12、group模块:组的管理

ansible dd -m group -a 'name=nginx system=yes gid=80'

创建系统用户组并指定gid。

ansible dd -m group -a 'name=nginx state=absent'

删除用户组。

三、galaxy系列命令

ansible-galaxy list

列出所有已经安装的galaxy

absible-galaxy install geerlingguy.nginx

安装galaxy

ansible-galaxy remove geerlinguy.nginx

删除galaxy

posted @ 2020-12-17 22:14  达芬Qi  阅读(269)  评论(2)    收藏  举报