发布网友 发布时间:2022-12-10 21:21
共1个回答
热心网友 时间:2024-11-06 06:09
Ansible是一个自动化管理IT资源的工具。
系统环境配置
安装软件
持续集成:自动化部署
热回滚
无客户端
推送式
丰富的第三方mole,大概1W多个
基于YAML的Playbook
商业化的支持
效率低,易挂起:基于ssh通信
并发性能差
环境准备
Python
Setuptools
pip(可选): pip install ansible
git clone https://github.com/ansible/ansible.git
source ./hacking/env-setup
python setup.py install 替换自带的二进制运行文件
yum install ansible
Ansible -> ssh -> ssh -> shell
Ansible配置文件路径优先级
(1) export ANSIBLE_CONFIG
(2) ./ansible.cfg
(3) ~/.ansible.cfg
(4) /etc/ansible/ansible.cfg
配置文件详解
ansible/ansible.cfg at devel · ansible/ansible · GitHub
(1) defaults默认配置项
inventory: 存放可通信主机的目录,可修改为普通用户目录
library: Ansible默认搜寻模块路径
forks: 最大开辟的进程数,不易过大,过大性能耗费高;不宜过小,过小并发性能低,一般设置为CPU核数*2。
ask_pass: 可以控制Ansible playbook是否会自动默认弹出输入密码框
ask_sudo_pass: 用户使用的系统平台开启了sudo密码的话,这个参数应该设置为true
gather_subset: 设置收集的内容,包括all、network、hardware、virtual、facter、ohai
remote_port: 设置客户机的端口,一般都是22
remote_tmp: 设置客户机的临时目录
remote_user: 设置客户机的用户
sudo_exe: sudo命令的路径
sudo_flags: sudo参数
sudo_user: 能够使用sudo的user
开发者中心的插件相关功能,开发者可以开发相应的插件,来完成自己的功能:
action_plugins: 激活事件
callback_plugins: 回调
connection_plugins: 连接,比如不使用ssh连接
filter_plugins: 过滤器
loopup_plugins: 加载路径
vars_plugins: 任何地方加载
(2) privilege_escalation执行命令的用户权限设置
(3) paramiko_connection paramika插件设置
(4) ssh_connection ssh链接设置
(4) accelerate
(5) selinux & colors
看源码
3.1 编辑/etc/ansible/hosts,添加机器ip
3.2 添加本机的Public SSH key到目标机器的authorized_keys
3.3 添加本机的私钥到Ansible
3.4 ansible all -m ping 测试是否添加成功
ansible: 命令主体
all: 默认是所有机器,被操作的目标机器的正则表达式,也可以按需求换做hosts文件中的其他组名
举例:
ansible test -m ping
ansible 192.168.1.10 -m ping
-m ping: 指定要使用的模块
-a: 指定传入模块的参数
举例:
ansible all -a "/sbin/reboot" -f 10 重启所有机器,每次重启10个
ansible all -a "/usr/bin/foo" -u root 指定root用户执行shell命令
-C -D: 两个一起使用,检查hosts规则文件的修改
-l: *匹配规则的主机数
--list-hosts: 显示所有匹配规则的主机
-m -M:指定所使用的模块和模块的路径
--syntax-check: 检查语法
-v: 显示详细的日志
playbook可以编排有序的执行过程,甚至可以在多组机器间,来回有序的执行特别指定的步骤,并且可以同步或异步的发起任务。
待学习补充...
功能:
调用Ansible模块:
Ansible 2.0之前和2.0之后API相差很大,注意版本
调用Ansible2.0 API:
6.1 自己写一个模块 test.py
6.2 把模块放到木块文件夹下
配置文件ansible.cfg中的lilbrary配置参数为ansible mole的放置路径。
6.3 运行自己的模块 ansible all -m test