使用Ansible自动化学习Shell命令的步骤和各种学习资源汇总
ansible是什么?
构建基础设施并管理,用于自动化手动指令操作的工具,以备不时之需。将指令转化为yaml格式需要相当深入的理解。
ansible的官方
如果你能读懂这部分内容,那么以下的文章你就不需要阅读了!
Ansible官方 GitHub 仓库
Ansible官方安装包的压缩文件。
本次的实践活动
无论是两台物理服务器还是两台虚拟服务器,只要能够连接,控制节点(执行ansible的一方)和目标节点(ansible执行命令的对象)都可以随意选择。
为了进行简单的实验,这次我们将使用AWS的EC2创建两个实例并进行实验。
Ansible安装步骤
从操作系统管理器中进行安装。
(centosの場合)
sudo yum install -y ansible
(ubuntu・debianの場合)
sudo apt-get install yum install -y ansible
在这次的实践中,我们将在Amazon Linux 2上安装Ansible,请参考下面的文章。
用 SSH 登录到目标 IP 的 hands-on-user01 用户。
在使用ANSIBLE时,在目标主机上创建用户!
通过上述链接的内容,我们在下面的yaml文件中实现了自动化。只需在客户端执行创建用户的处理。
---
- name: create user
user:
name: hands-on-user01
createhome: yes
state: present
password: "{{ 'hands-on' | password_hash('sha512') }}"
- name: modify sshd_config
lineinfile:
dest: /etc/ssh/sshd_config
state: present
backrefs: yes
regexp: '^PasswordAuthentication no'
line: 'PasswordAuthentication yes'
notify:
- restart sshd
---
- name: restart sshd
service:
name: sshd
state: restarted
enabled: yes
使用ANSIBLE在目标端创建用户!(使用变量的指令部分)
通过ansible-playbook命令执行site.yml文件,使用inventory/hosts文件中的主机列表进行操作,ssh连接到目标IP,用户为hands-on-user01。
---
- name: create users
user:
name: "{{ item.name }}"
createhome: "{{ item.home }}"
state: "{{ item.state }}"
remove: "{{ item.remove }}"
password: "{{ item.password | password_hash('sha512') }}"
with_items: "{{ users }}"
- name: change hostname
hostname:
name: "{{ inventory_hostname }}"
- name: modify sshd_config
lineinfile:
dest: /etc/ssh/sshd_config
state: present
backrefs: yes
regexp: '^PasswordAuthentication no'
line: 'PasswordAuthentication yes'
notify:
- restart sshd