Ansible 自动化运维的使用与常用模块

原创 浪子丶刘少  2019-08-19 09:30  阅读 670 次 评论 0 条 百度未收录

这几天抽出来时间整理一下ansible的使用,对于这款轻便的自动化运维工具,相信对于运维工程师来说已经是一个必不可少的工具了。

一、关于Ansible的主配文件

vim /etc/ansible/ansible.cfg
[defaults]
此列下为ansible默认值,可修改

forks = 5
#表示最多同事执行五个操作

poll_interval = 15
#间隔,多久拉取以此数据

sudo_user = root
#默认用户名

ask_sudo_pass = True
#每次连接远程主机是否询问ssh密码

host_key_checking = False
#检查对应服务器的host_key,建议取消

log_path = /var/log/ansible.log
#日志记录,取消注释即可记录

二、Ansible主机模式

ansible的Host-pattern:

All : 表示所有Inventory中的所有主机
例:
ansible all -m ping        

* : 通配符
例:
ansible "*" -m ping
ansible 192.168.1.* -m ping
ansible "*srvs" -m ping

或关系
例:
ansible "webservers:appsrvs" -m ping
ansible "192.168.1.10:192.168.1.20" -m ping

逻辑与
例:
ansible "web:&dbs" -m ping

逻辑非
例:
ansible 'web:!dbs' -m ping
在web组,但不在dbs组中的主机
注意:此处为单引号

综合逻辑
例:
ansible 'web:dbs:&apps:!ftps' -m ping

正则表达式
例:
ansible "webs:&dbs" -m ping
ansible "~(web|db).*\.magedu\.com" -m ping

三、Ansible命令格式

ansible  [-m module_name] [-a args]
--version       显示版本
-m  module      指定模块,默认为command
-v              详细过程 -vv -vvv更详细
--list-hosts    显示主机列表,可简写-list
-k, --ask-pass  提示输入ssh连接密码,默认key验证
-K, --ask-become-pass  提示输入sudo时的口令
-C, --check     检查,并不执行
-T, --timeout=TIMEOUT  执行命令的超时时间,默认10S
-u, --user=REMOTE_USER执行远程执行的用户
-b, --become代替旧版的sudo切换

四、Ansible的常用模块

1、command 模块(不支持特殊符号)

Command:在远程主机执行命令,默认模块,可忽略-m选项
- chdir 切换目录后执行
- creates 文件存在即执行
- removes 文件不存在即执行

2、Shell 模块

shell:和command相似,用shell执行命令。(调用bash执行命令)

3、Script 模块,运行脚本

Script:运行脚本

4、copy 模块(从服务器复制文件至客户端)

backup    复制之前先备份
dest      目标位置
mode      模式,即权限
src       源,即本机文件位置
#注:如果文件存在直接覆盖,建议使用backup=yes先进行备份

5、Fetch 从客户端复制文件至服务器端,copy相反,目录可先tar

ansible webs -m fetch -a 'src=/root/1.sh dest=/data/1.sh'

6、File模块 (设置文件属性)

ansible webs -m file -a "path=/root/a.sh owner=liushao mode=755"
#改变权限

ansible webs -m file -a "src=/etc/fstab path=/data/fstab state=link"
#创建/etc/fstab的软连接文件

其中:
path=  表示指定路径
state=touch  创建文件
state=directory  创建目录
state=absent  删除文件,目录

7、hostname (管理主机名)

ansible node1 -m hostname -a "name=webserver"
#修改node1的主机名为webserver
8、cron (计划任务)

支持时间:minute,hour,day,month,weekday

ansible all -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.16.0.1 & > /dev/null' name=Synctime"
#创建计划任务

ansible all -m cron -a "disabled=true job='/usr/sbin/ntpdate 172.16.0.1 & > /dev/null' name=Synctime"
#禁用计划任务

ansible all -m cron -a "state=absent name=Synctime"
#删除任务

9、YUM (包管理)

ansible all -m yum -a "name=httpd state=latest"
#安装httpd软件包

ansible all -m yum -a "name=httpd state=absent"
#卸载httpd软件包

10、Service (管理服务)

ansible all -m service -a "name=httpd state=stopped enabled=no"
#停止服务,并取消开机自启

ansible all -m service -a "name=httpd state=restart enabled=yes"
#重启服务,并设置开机自启

11、User (管理用户)

ansible all -m user -a "name=user1 comment='test user' uid=2048 home=/app/user1 group=root"
#创建user1用户
name 指定用户名
uid  指定用户uid
shell 指定用户shell,如/sbin/nologin
system yes或No,指定是否为系统账号
home 指定家目录
comment 用户描述

ansible all -m user -a "name=user1 state=absent remove=yes"
#删除用户
remove  是否删除家目录
12、Group (组管理)

ansible all -m group -a "name=liushao system=yes"
#创建liushao组

ansible all -m group -a "name=liushao system=absent"
#删除liushao组

本文地址:https://www.ezliushao.com/314.html
加入我们:请加入刘少技术博客交流群:扫描二维码刘少技术博客的QQ交流群 | 浪子丶刘少 QQ:1150110267(注:微信暂停添加好友)
版权声明:本文为原创文章,版权归 浪子丶刘少 所有,欢迎分享本文,转载请保留出处!

发表评论


表情