ansible_intro
Ansible 概览
这部分内容对所有用户均有用。 你需要了解 Ansible 的使用背景才能在各类场景下使用他的自动化功能。本页内容是你深入理解其它内容的基础。
- 管理机
- 受控节点
- Inventory 仓库
- Modules 模块
- Tasks 任务
- Playbooks 任务剧本
管理机
任何安装了 Ansbile 的服务器,你都可以使用 ansible or ansible-playbook 命令。 任何安装了 Ansbile 的机器都可以做为管理节点,便携式计算机,共享桌面和服务器都可以。 你可以配置多个管理节点。唯一需要注意的是,管理节点不支持 Windows 系统。
受控节点
Ansbile 管理的服务器或者网络设备都称为受控节点。 受控节点有时候也叫做 “hosts” ( 主机 ). 受控节点不需要安装 Ansible.
Inventory 仓库
Inventory 仓库是保存受控节点信息的列表, 因为有时候也叫 “hostfile”, 类似于系统的 hosts 文件。 Inventory 仓库可以以 IP 的方式指定受控节点。 Inventory 同样可以组织管理节点、新增、嵌套组等方式,非常便于扩展。 更多请参考 the Working with Inventory
Modules 模块
Modules 模块是 Ansible 执行代码的最小单元。 每个模块都是特殊用途,从特殊类型的数据库用户管理,到特殊类型的网络设备 VLAN 接口管理。 你可以在通过执行单个任务调用一个模块,也可以通过 playbook 同时调用执行钓具模块。 在链接中查看 Ansible 总共包括了多少个模块。:ref: 模块列表 <modules_by_category>
.
Tasks 任务
Ansible 执行操作的最小单位。 ad-hoc 更适合临时执行命令的执行场景。
Playbooks 任务剧本
Playbooks 是任务列表的组合,通常会把常用的命令列表通过正确的语法写入到 playbook中。 Playbook 可以像普通 tasks 一样调用变量, 其使用 YAML 语法,便于读、写、分享、理解。更多请参考 Intro to Playbooks.
install ansible
install python3.8 on centos8
https://luochunhai.github.io/2021/12/24/python/python-centos-install/https://computingforgeeks.com/how-to-install-python-3-python-2-7-on-rhel-8/
https://linuxize.com/post/how-to-install-python-3-8-on-centos-8/
1 | sudo dnf install python3 |
安装 Ansible on CentOS
pip install
1 | pip install setuptools-rust |
yum install
1 | yum install epel-release -y |
ansible的使用
基于端口,用户,密码定义主机清单
格式:
1 | ansible基于ssh连接-i (inventory)参数后指定的远程主机时,也可以写端口,用户,密码。 |
如:
ansible_ssh_port: 指定ssh端口
ansible_ssh_user:指定 ssh 用户
ansible_ssh_pass: 指定 ssh 用户登录是认证密码(明文密码不安全)
ansible_sudo_pass: 指明 sudo 时候的密码
添加的内容如下:
1 | [root@ansible_master ansible]# grep -v ^# /etc/ansible/hosts |grep -v ^$ |
直接添加到文件文末就可以;
测试主机的连通性
1 | yum install epel-release -y |
- 可能出现的问题:
Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this
1 | vi /etc/ansible/ansible.cfg |
查看组下所有的IP:
1 | ansible all --list |
基于ssh密钥来访问定义主机清单
设置密钥 manage node
1 | ssh-keygen -t rsa -b 4096 |
- ssh-keygen命令用于为“ssh”生成、管理和转换认证密钥,它支持RSA和DSA两种认证密钥。
1 | -b:指定密钥长度; |
拷贝密钥并测试
1 | 使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录 和ssh常用命令 |
或者手动拷贝
1 | vim ~/.ssh/authorized_keys |
使用ping检查‘web-servers’或者ansible节点的连通性。
1 | ansible -i /etc/ansible/hosts 'remote' -m ping |
案例1: 检查节点的内存情况
1 | ansible -m command -a "free -m " 'remote' |
案例2:给节点增加用户
1 | ansible -m command -a "useradd summer" 'remote' |
查看是否创建用户成功
1 | ansible -m command -a "id summer" 'remote' |