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

浙公网安备 33010602011771号