Linux:ansible自动化运维工具

环境介绍

当前所有执行权限我是在root下执行的,如果提示权限之类的,可以在每句命令前  加上 sudo   

ansible主服务器  192.168.0.194        

另外两个客户端分别为 192.168.0.193   192.168.0.192

软件只需要在主服务器上安装,客户端不需要去安装软件,因为他们相互使用的是ssh

只需要在主服务器上安装好软件,然后生成一个密钥发送至客户端,实现,主服务器免密ssh连接客户机即可


安装ansible

在主服务器上进行软件安装 

rm -rf /etc/yum.repos.d/*

删除所有yum仓库(如果你原来有重要yum仓库记得备份) 

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装阿里云yum仓库镜像

yum clean all && yum makecache

清除以前缓存 &&更 新缓存

yum -y install epel-release
yum -y install ansible


主服务器生成密钥ssh免密登录客户机

在主服务器上

ssh-keygen -t rsa

 输入完命令一直回车即可

ssh-copy-id 用户@ip地址

传输密钥,传输完以后可以进行免密ssh连接

ssh-copy-id root@192.168.0.193

 输入完命令以后,yes,输入密码就可以了

如果有另外的客户端,也执行同样操作,全测试可以免密ssh登录即可

ssh-copy-id root@192.168.0.192

 只要ssh登录时候不用密码就是成功了


主机列表   /etc/ansible/hosts

 主机列表可以写一个组,组名下面写ip或者主机名,就是这个组的成员,控制这个组,或控制单个都是可以的

vim /etc/ansible/hosts

进去以后可以单起一行,前面没有的#才行

格式为

[组名]

主机ip或主机名

……

 web就是组名

下面的就是ip,当我们对web进行操作,两个主机就会回馈

此外还可以这样写……
 

[web]   ## 主机组
192.168.10.2
192.168.10.3

[test01]
www.bdqn.cn:222   ##通过端口222管理设备

[mail]
ly01.mail.cn

[ly]
ly[2:5].test.com  ##正则表达式:表示4台主机ly2,ly3,ly4,ly5..


基础操作 

ansible web -m command -a "firewall-cmd --state"

 查看web组的主机有没有开防火墙

        

ansible web -m command -a "systemctl stop firewalld" --limit "192.168.0.193"

对web组的192.168.0.193执行关闭防火墙操作

可以指定ip去执行

ansible 192.168.0.192  -m command -a "ip a"

通过通配符来指定多个主机远程操作(可以理解为一个网段)

ansible 192.168.0.* -m command -a "firewall-cmd --state"


Ansible注意事项->提示颜色信息说明

黄色:对远程节点进行相应修改
绿色:对远程节点不进行相应修改,或者只是对远程节点信息进行查看
红色:操作执行命令有异常
紫色:表示对命令执行发出警告信息(可能存在的问题,给你一下建议)
 


ansible命令

检查清单中所有主机是否存活
-f  并发线程数为5
-m   调用ping模块(并不是ping命令) 

ansible all -f 5 -m ping

## success---表示成功; => {} 表示返回结果
## changed false 表示没有对主机进行更改
##pong ---ping模块返回结果

all就是全部的意思,也可以指定某个组或者ip

列出web组主机列表 

ansible web --list

 

批量显示web组磁盘使用情况     

ansible web -m command -a "df -hT"

ansible-doc  可用来查询模块文档的说明,类似于man

列出所有模块信息

ansible-doc -l

查询ping模块的说明信息

ansible-doc ping

ansible-console 交互式工具。类似于cmd或shell

ansible-console 

进去之后可以使用cd + 组名进去进行直接操作

 

list可以列出当前组的成员


ansible常用模块 

Shell功能全面但是执行率低
command不支持:逻辑运算符、条件判断符号、重定向命令或者是管道命令


command模块---远程执行命令     
chdir---在远程主机运行命令前,要提前进入的目录
creates---创建文件(如文件已存在,则不执行)
removes--移除文件(如文件不存在,则不执行)
executable--更改shell环境(并且执行命令时要使用绝对路径)

 在web组主机上运行命令,运行前切换到/root目录

ansible web -m command -a "chdir=/root  ls ./"

 web就是组名

shell模块---相当于调用远程主机的shell进程,在该shell下打开一个子shell运行命令
 

ansible web -m shell -a 'echo "hello ly" >> /tmp/hello.txt'

 web就是组名

ssh ip地址 cat /tmp/hello.txt


copy模块---在远程主机执行复制操作文件。 

– src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用”/”来结尾,则只复制目录里的内容,如果没有使用”/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。 
– content:用于替代”src”,可以直接设定指定文件的值 
– dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录 
– directory_mode:递归的设定目录的权限,默认为系统默认权限 
– force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes 
– others:所有的file模块里的选项都可以在这里使用

mode--文件权限

owner--属主

group--属组

ansible web -m copy -a "src=/etc/hosts dest=/tmp/ mode=777 owner=nobody group=root" 


更改远程主机名为ly

ansible ip地址或组名 -m hostname -a "name=ly" 


yum模块---调用远程主机的yum程序进行管理

Ansible yum模块主要用于软件的安装、升级、卸载,支持rpm软件包的管理 
yum模块使用详解:

conf_file:设置远程yum执行时所依赖的yum配置文件
disable_gpg_check:安装软件包之前是否检查gpg key
name:需要安装的软件名称,支持软件组安装
update_cache:安装软件之前更新缓存
enablerepo:指定repo源名称
skip_broken:跳过异常软件节点
state:软件包状态,包括installed、present、latest、absent、removed present, installed是指安裝套件,而latest指安裝最新的套件,也就是使用 yum mirror 上最新的版本。
absent, removed 没有什么区别

调用yum模块安装httpd服务

 ansible ip地址 -m yum -a "name=httpd state=present"

service模块---管理远程主机服务

name---服务名
state=started/stopped/restarted  动作为启动、停止、重启
enabled=no/yes  是否设置为开机启动
runlevel :如果定义了开机启动,则设置运行级别

 

确保要开启的服务软件已经安装了

 

ansible 192.168.10.3 -m service -a "name=httpd state=started enabled=yes"

执行完就这样

 

 running就开启成功了


user模块---管理远程主机用户账户

Ansible user模块主要用于操作系统用户、组、权限、密码等操作 
user模块使用详解:

system:默认创建为普通用户,为yes则创建系统用户
append:添加一个新的组
comment:添加描述信息
createhome:给用户创建家目录
force:强制删除用户
group:创建用户主组
groups:将用户加入组或者附属组添加
home:指定用户的家目录
move_home=yes/no 如果设置的家目录已存在,是否将已存在的家目录进行移动
name:表示状态,是否create、remove、modify
password:指定用户的密码,为加密密码
remove:删除用户
shell:设置用户的shell登录环境
uid:设置用户ID
update_password:修改用户密码
state:用户状态,默认为present,表示新建用户

 

ansible web -m user -a 'name=user1 system=yes uid=501 group=root groups=sshd shell=/sbin/nologin home=/user1 password=123 comment="test user"

在web组的所有主机上创建一个user1用户,是系统用户,uid是501 组是root  附属组是sshd ,shell环境是/sbin/nologin  ,家目录是/user1,密码是123,介绍是test user

 

ansible web -m user -a 'name=user1 password=123'

如果你就简单的设置一下那么他和useradd user1差不多, 

ansible web -m user -a "name=user1 remove=yes state=absent"

删除刚刚添加的用户

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值