ansible的基础知识

ansible是一个自动化的"配置管理"工具;

  • 应用服务橄管理,安装、配置、启动、更新配置;

优点:

  1. 批量执行; playbook编排IT任务;
  2. 嵌入至其他的项目;jumpserver;
  3. 简单,容易学习; 、
  4. 功能强大,模块众多;

缺点:

  1. 幂等性:每次的描述一种状态后,服务器会按照你所期望的状态去运行;出了问题无法回退;
  2. 重新在描述一次状态,然后执行,以实现回退的效果; b - a
  3. 如果链接的主机较多,执行的速度会比较的慢;并行执行;saltstack并发执行;

架构图
在这里插入图片描述
ansible配置文件

[root@master ~]# rpm -qc ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts   # 主机清单文件

#inventory      = /etc/ansible/hosts  #可以自定义
#library        = /usr/share/my_modules/
#module_utils   = /usr/share/my_module_utils/
#remote_tmp     = ~/.ansible/tmp
#local_tmp      = ~/.ansible/tmp
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks          = 5   # 调节并行主机数量
#host_key_checking = False

ansible配置文件优先级

# nearly all parameters can be overridden in ansible-playbook
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first

第一步读取: ANSIBLE_CONFIG
[root@master ~]# export ANSIBLE_CONFIG=/tmp/ansible.cfg
[root@master ~]# touch /tmp/ansible.cfg
[root@master ~]# ansible --version
ansible 2.9.27
  config file = /tmp/ansible.cfg
  
[root@master ~]# unset ANSIBLE_CONFIG
[root@master ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg

第二步读取: 当前项目目录下的ansible.cfg

***** 为项目单独定义配置文件
[root@master ~]# mkdir project1
[root@master ~]# cd project1/
[root@master project1]# touch ansible.cfg
[root@master project1]# ansible --version
ansible 2.9.27
  config file = /root/project1/ansible.cfg

第三步读取: 当亲用户家目录下的.ansible.cfg
[root@master project1]# touch ~/.ansible.cfg
[root@master ~]# ansible --version
ansible 2.9.27
  config file = /root/.ansible.cfg
[root@master ~]# rm -f ~/.ansible.cfg
[root@master ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg


第四步读取: /etc/ansible/ansible.cfg 
默认加载路径
[root@master ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg

ansible Inventory

# 单台主机
192.168.10.10
# 主机组
[webservers]
192.168.10.10

[dbservers]
192.168.10.20
www[001:006].example.com

[test]
db[a:z][a:z]node.example.com
[root@master ansible]# ansible wrbservers --list-hosts
[WARNING]: Could not match supplied host pattern, ignoring: wrbservers
[WARNING]: No hosts matched, nothing to do
  hosts (0):
[root@master ansible]# ansible webservers --list-hosts
  hosts (1):
    192.168.10.10

[root@master ansible]# ansible dbservers --list-hosts
  hosts (7):
    192.168.10.20
    www001.example.com
    www002.example.com
    www003.example.com
    www004.example.com
    www005.example.com
    www006.example.com
    
[root@master ansible]# echo "26*26" | bc
676
[root@master ansible]# ansible test --list-host -i /etc/ansible/hosts  |wc -l
677

ansible-密码-秘钥连接方式

[webservers]
192.168.10.10 # ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=000000

[webservers:vars]
ansible_ssh_port=22 
ansible_ssh_user=root 
ansible_ssh_pass=000000
先免密
ssh-copy-id ~/.ssh/id_rsa.pub root@192.168.10.10
ssh-copy-id ~/.ssh/id_rsa.pub root@192.168.10.20
修改主机清单

[webservers]
192.168.10.10

[dbservers]
192.168.10.20

ansible 匹配主机名称方式

指定所有的组
[root@master ~]# ansible all -m ping  
通配符
[root@master ~]# ansible "*" -m ping
与: 在webservers组:并且在dbservers中的主机
[root@master ~]# ansible "webservers:&dbservers" -m ping 
或: 在webservers组或者在dbservers组中的主机
[root@master ~]# ansible "webservers:dbservers" -m ping
非: 在webservers组但不在dbservers的主机
[root@master ~]# ansible 'webservers:dbservers' -m ping 

使用普通用户管理被控端

控制端
useradd HYC
echo "123" | passwd --stdin HYC

vim /etc/sudoers
root    ALL=(ALL)       ALL
HYC     ALL=(ALL)       NOPASSWD:ALL  #加上这一行

visudo -c  # 检查语法

vim /etc/ansible/ansible.cfg 

[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

被控制端
useradd HYC
echo "123" | passwd --stdin HYC

vim /etc/sudoers
root    ALL=(ALL)       ALL
HYC     ALL=(ALL)       NOPASSWD:ALL  #加上这一行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值