-
Notifications
You must be signed in to change notification settings - Fork 0
Ansible Learning Report csd
YagoToasa edited this page Oct 19, 2019
·
1 revision
参考资料:Ansible Documents
Ansible是一个配置管理和应用部署工具。
Ansible默认通过SSH协议管理机器,因此Ansible不需要在受控服务器上安装客户端程序,只需要将Ansible安装在用于集中控制/管理的服务器上即可。
- Python 2 (version 2.6 or later) or Python 3 (version 3.5 or later).
- System:Fedora、RHEL、CentOS、Ubuntu、Debian、Gentoo、FreeBSD、macOS、Arch Linux……
-
因为项目后续要求使用python,因此这里采用pip安装方式,这里我直接全局安装了。
pip install ansible ansible --version
-
Result:
-
-
使用pip安装的ansible没有配置配置文件(config file),可以使用touch命令创建一个空的ansible.cfg文件
sudo touch /etc/ansible.cfg ansible --version
-
Result:
-
-
官方提供的默认配置文件实例:ansible.cfg
- inventory:指定ansible连接的主机清单,默认/root/ansible/hosts;
- forks:Ansible可以同时启用的进程数量,默认是5个;
- remote_user:远程连接用户,默认root;
- sudo_user:默认执行命令的用户,默认root;
- remote_port:远程连接使用的端口,默认22;
- private_key_file:SSH使用密钥认证时,指定的密钥路径;
- host_key_checking:设置是否检查SSH主机密钥,设置为False可以跳过SSH首次登陆时的验证;
- log_path:日志文件路径,Ansible默认不记录日志。
-
在控制节点创建秘钥,执行命令,之后一直敲回车就行。
ssh-keygen -t rsa -C "email-address" ls -al ~/.ssh
-
Result:
-
id_rsa.pub 即为公钥文件
-
id_rsa为私钥,不能外泄!
-
-
拷贝当前主机的ssh key到远程主机,username@IP
# 这里我连接的是k8smaster节点 ssh-copy-id [email protected]
-
将受控节点的ip保存到管理节点的known_hosts中
ssh-keyscan 192.168.209.152 >> ~/.ssh/known_hosts
-
Result:
-
-
若出现请输入私钥密码,按照以下方法解决
Enter passphrase for key 'path' ssh-add -K path
-
登陆远程服务器
ssh username@IP
Default path: /etc/ansible/hosts
,若不存在,创建一下就行。
-
现在将需要管理的受控节点地址配置到hosts文件中
sudo vim /etc/ansible/hosts
-
Demo:
- 可用[name]来指定分组/名称
- 在免密登陆这一步,我仅将公钥发送给了k8smaster节点,并未发送给k8snode01节点,因此连接k8snode01,需要指定用户名
ansible_user
及密码ansible_ssh_pass
- 已配置过免密登陆的k8smaster 只需要指定用户名即可。
-
编辑完毕后保存并退出即可
:wq
-
-
连接测试
ansible all -m ping
-
Result:
-