ansible7种常用模块

什么是ansible: 基于python研发,(yum也是基于python开发的)
自动发部署APP自动化持续交付自动化云服务管理

为什么选择ansible:学习,使用成本低性能高使用广泛,社区活跃度高

ansible优点:只需要ssh和python即可使用无客户端功能强大,模块丰富
上手容易门槛低基于python开发,做二次开发容易使用公司多,社区活跃

ansible特性:模块化设计

一:安装ansible
华为云场景:(不是华为云的场景,需要自定义yum仓库,默认没有ansible的软件包)
yum -y install ansible 安装ansible
ansible --version 验证

主机管理:
/etc/ansible/ansible.cfg //是ansible的默认配置文件路径
vim /ect/ansible/ansible.cfg
inventory = /etc/ansible/hosts 去掉注释 指定配置文件,写入远程主机的地址。
host_key_checking = False 去掉注释 如果为False ssh时候不需要输入yes
做主机名映射 /etc/ansible/hosts就可以写主机名了
192.168.1.41 web1
192.168.1.42 web2
192.168.1.43 db1
192.168.1.44 db2
192.168.1.45 cache
vim /etc/ansible/hosts
[web] web组下有web1,web2 相对应的ip就是1.41 和1.42
web1
web2

[db]
db[1:2]
[other]
cache
当前是云主机做的ansibal之前做过密钥对认证
如不是用云主机做的需要密钥对连接

inventory扩展参数
vim /etc/ansible/host
[db:vars] //db(组名) :vars是(固定字符)给组定义参数
ansible_ssh_user=“root” //ansible连接db组所有主机时候默认用root用户连接

[db]
db1
db2 ansible_ssh_port=222 //给单台机器定义参数,默认连接22,需要指定新的端口
再次用ansible db -m ping //验证

[app:children] //用children声明一下是组名并非主机名
db //db组
web //web组

分组信息: web,db,other localhost all (本机和全部是自带的)
查看分组列表
ansible web --list-hosts //列出web组的主机
ansible db --list-hosts //列出db组的主机
ansible all --list-hosts //列出所有主机
ansible db,web --list-hosts //看db组和web组
ansible db2,web --list-hosts

ansible 组名 -m 模块的名称 -a 模块的参数
ansible web -m ping //ping模块没有参数所以不加
ansible all -m ping //如果回复都是绿色的则环境正确

二 若多人想分不同的组可以自定义配置文件,利用ansible配置文件查找顺序在./ansible.cfg
-创建目录myansible
cd /myansible
创建配置文件必须为ansible.cfg
[defaults]
inventory = myhost //指定主机文件
host_key_checking = False
-创建并配置主机文件
vim myhost
[app1]
web1
db1
cache
[root@ecs-proxy myansible]# ls
ansible.cfg myhost
在当前目录测试:ansible app1 --list-hosts
离开当前目录就测试没有app1组了
我们配置的分组信息配置文件是静态的,好处是简单
主机列表可以是动态,需要用python脚本和json实现。
json是一种基于文本独立与语言的轻量级数据交互格式, 按照特定的语法,表示特定的含义

一。ansible的使用
查看某个模块的帮助信息 ansible-doc 模块名
ansbile-doc -l //列出所有模块
1.command模块(默认模块) 不能执行<>|等一些命令
ansible 主机组 -m 模块 -a ‘远程命令’
ansible-doc -l | wc -l //查看ansible模块数量
ansible web -m command -a ‘uptime’ //-a后面跟在主机组上执行的命令
ansible web -a ‘df -h /’ //默认就是command模块可以不加

2.sheel模块大部分命令都可以运行,不能交互
shell模块开启/bin/sh
ansible web -m sheel -a ‘ss -ntulp | grep 80’
ansible web -m shell -a “echo ${HOSTNAME}” 双引号是输出本机主机名
ansible web -m shell -a ‘echo ${HOSTNAME}’ 单引号是远程主机主机名
ansible执行命令是二次解析,第一次在本机第二次在远程主机

3.script模块,把本机的脚本考到远程主机执行,在把远程主机的脚本删除掉
ansible 主机组 -m script -a ‘脚本所在的路径’
vim uu.sh
案例一:在所有web主机上创建wk
要求有nb用户不能和wk用户出现在一台主机上
设置wk用户的密码为456
vim uu.sh
#!/bin/bash
id nb
if [ $? -ne 0 ];then
useradd wk
echo 456 | passwd --stdin wk
fi
ansible web -m script -a ‘./uu.sh’ //执行当前路径下的脚本uu.ssh
也可以在脚本里写
id nb || useradd wk && echo 456 | passwd --stdin wk
前面命令执行成功了则不执行后面命令
前面命令执行失败则创建用户并且设置密码

4.yum模块的使用 装包用
name:要进行操作的软件包名字
state:动作(installed,removed)
yum -y install httpd
state(动作) name(名字)
ansible db -m yum -a 'name=“mariadb-server”‘state=installed’
ansible db -m yum -a 'name=“mariadb-server,lrzsz”‘state=“installed”’
//如果下多个软件用逗号间隔
ansible web -m yum -a ‘name=“lrzsz”,“gcc” state=“installed”’

5.service模块 启服务用
name:必选项,服务名称
enabled:是否开机启动yes|no
sleep:执行restarted,会在stop和start之间沉睡几秒
state:对当前服务执行启动,停止,重启等操作 started,stopped,restarted,reloaded
ansible db -m service -a ‘name=“mariadb” state=“started” enabled=“yes”’

6.capy模块
复制文件到远程主机
ansible web -m copy -a ‘src=/etc/resolv.conf dest=/etc/resolv.conf’ //src=本地文件 dest的远程主机文件
ansible web -m shell -a ‘cat /etc/resolv.conf’
复制目录到远程主机
ansible web -m copy -a ‘src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/’
格式跟sync差不多不加斜杠整个目录就同步过去了
ansible web -m shell -a ‘yum repolist’

  1. lineinfile模块 匹配到那一行,把那一行删了改为line=的样子
    参数path 要修改的文件
    regexp 要修改的行(使用正则表达式)
    line 修改后的样子
    ansible db -m lineinfile -a ‘path="/etc/my.cnf" regexp="^binlog-format" line=“binlog-format = row”’

8.replace 匹配到什么就修改什么
参数 path 要修改的文件
regexp 要修改的字符(使用正则表达式)
replace 修改后的字符
ansible db -m replace -a ‘path="/etc/my.cnf" regexp=" row$" replace=" mixed"’
replace和lineinfile的区别是,lineinfile是整行替换,replace是匹配什么替换什么,后面不动。
换单个字符用replace 换整句用lineinfile

  1. setup模块
    参数filter:过滤所需信息
    ansible db -m setup -a ‘filter=ansible_distribution’

猜你喜欢

转载自blog.csdn.net/m0_46588765/article/details/105041019
今日推荐