使用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

解释各种yaml语法的描述:

[Ansible][yum] 如何同时/一次性安装多个软件包

广告
将在 10 秒后关闭
bannerAds