前言:原先这篇博客是在《Linux系统综合配置:yum源设置、逻辑卷制作》里的,现在想着ansible-vault加密配置是可以单独出一期的,就拆分出来了。
一、安装ansible
命令:sudo dnf update
命令:sudo dnf install python3
查看版本:python3 -V
命令:sudo dnf install python3-pip
命令:pip3 install ansible --user
命令:sudo systemctl status sshd
二、配置免密(可选一)
主节点24上生成密钥
ssh-keygen -t rsa
一路回车执行
向主机分发公钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@节点1的ip
ssh-copy-id -i ~/.ssh/id_rsa.pub dfuser@节点2的ip
ssh-copy-id -i ~/.ssh/id_rsa.pub dfuser@节点3的ip
三、验证
在安装ansible环境服务器上输入命令:
ansible all -m ping
如果有各节点的返回信息,那就说明环境部署成功
四、配置ansible-vault 加密(可选二)
这个步骤是新的节点,也就是说如果配置免密了就不需要进行这步,但如果生产环境中考虑到安全,需要配置vault加密,那就不需要做免密配置,直接跳转到这步
第一步:配置host文件
vim /etc/ansible/hosts
[项目名1]
项目1下所有ip
10.0.0.1
......
[项目名2]
项目2下所有ip
10.0.0.100
......
第二步:编辑secrets.yml,通过ansible-vault加密密码文件
1、创建secrets.yml
当使用以下命令创建一个加密的Ansible Vault文件时,Ansible会提示你输入一个密码。这个密码将用于加密和解密secrets.yml文件,确保文件中的敏感信息(如密码、密钥等)安全
ansible-vault create secrets.yml
2、编辑 secrets.yml
ansible-vault edit secrets.yml
提示: ${passwd}是实际服务器密码,根据实际情况修改
添加以下信息后保存
项目名1_password: '${passwd}'
项目名2_password: '${passwd}'
......
第三步:执行python脚本范例
ansible脚本:test.yml
---
- name: 项目1
hosts: 项目1
user: 普通用户
# 引用配置文件
vars_files:
- "secrets.yml"
# 设置变量
vars:
ansible_ssh_pass: "{{ lookup('vars', '项目1_password') }}"
ansible_become_pass: "{{ lookup('vars', '项目1_password') }}"
tasks:
- name: just test
become: yes
become_user: root
become_method: sudo
shell: |
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
systemctl restart sshd
- name: 项目2
hosts: 项目2
user: 普通用户
vars_files:
- "secrets.yml"
vars:
ansible_ssh_pass: "{{ lookup('vars', '项目2_password') }}"
ansible_become_pass: "{{ lookup('vars', '项目2_password') }}"
tasks:
- name: just test
become: yes
become_user: root
become_method: sudo
shell: |
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
systemctl restart sshd
- name: 更多项目
hosts: 更多项目
user: 普通用户
vars_files:
- "secrets.yml"
vars:
ansible_ssh_pass: "{{ lookup('vars', '更多项目password') }}"
ansible_become_pass: "{{ lookup('vars', '更多项目_password') }}"
tasks:
- name: just test
become: yes
become_user: root
become_method: sudo
shell: |
echo "PermitRootLogin no" >> /etc/ssh/sshd_config
systemctl restart sshd
执行剧本脚本
ansible-playbook -i /etc/ansible/hosts 3.yml --ask-vault-pass -v
-i 指定host文件 --ask-vault-pass 输入secrets.yml的密码,-v 输出执行结果
最后即兴一首诗总结下:
《Linux 之景》
Linux世界如画卷,技术之美映眼帘。
Yum源似清泉涌,逻辑卷展新景观。
Ansible境如春日,加密守护意绵绵。
科技风景无限好,探索之路永向前。