📌  相关文章
📜  在 ansible playbook 中存储主机的用户名和密码 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:07:37.127000             🧑  作者: Mango

在 Ansible Playbook 中存储主机的用户名和密码 - TypeScript

在使用 Ansible 执行任务时,有时需要在 playbook 中存储主机的用户名和密码。这种情况可以使用 Ansible 的 vault 功能来加密存储这些敏感信息。

以下是如何在 TypeScript 中使用 Ansible 的 vault 功能存储主机的用户名和密码的步骤:

步骤 1:创建一个用于存储主机信息的 YAML 文件

首先,创建一个 YAML 文件,用于存储主机信息和相关的凭据。示例文件如下:

# hosts.yml

all:
  hosts:
    webserver1:
      ansible_host: 192.168.1.10
      ansible_user: "{{ vault_ansible_user }}"
      ansible_password: "{{ vault_ansible_password }}"
    webserver2:
      ansible_host: 192.168.1.11
      ansible_user: "{{ vault_ansible_user }}"
      ansible_password: "{{ vault_ansible_password }}"
步骤 2:使用 Ansible Vault 加密凭据

接下来,使用 Ansible Vault 加密在 YAML 文件中使用的凭据。在命令行中执行以下命令:

ansible-vault encrypt_string 'my_password' --name 'vault_ansible_password'
ansible-vault encrypt_string 'my_username' --name 'vault_ansible_user'

执行这些命令后,会要求你输入一个密码来加密生成的字符串。完成这些步骤后,将获得类似以下内容的输出:

!vault |
          $ANSIBLE_VAULT;1.1;AES256
          66373366346435623661663438373965383936646537623133636435336631656234303839646634
          3864383631333764393962303266383337356365353435300a666438383637633831623038333239
          36326163633431326330653765373731633937643235636165383235333130636263643437376364
          3035613363333033380a346265623532623064636364656131626262313538653932336535383565
          3935
vault_ansible_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          33303062643133353531343333373235373636343334616231333464353734393036643832336134
          6165666166383537376431646565396236343861373336350a376563383965376639383636363639
          31653334336334653939663064386365643535373561346539333264646662336660643334383262
          3466373830653733660a386163373430323637633162306630396537306165363931363330633332
          3732
vault_ansible_user: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          30623736663738623434666663636336383066663034373931373933626139303535646238646230
          6263633562316339303635513866313832373262623662360a393233326135656163633738313066
          33663761316539396431356336383239393634636238393662353262636137336365363438613330
          3331623834356437390a633630633561633239633838633064383464633165356134313934653762
          3861

将这些输出复制到 YAML 文件中的变量占位符内。

步骤 3:编写 Ansible Playbook

现在,根据需要编写 Ansible Playbook 来执行主机上的任务。示例 Playbook 如下:

# playbook.yml

- hosts: webserver1,webserver2
  gather_facts: false
  tasks:
    - name: Get hostname
      command: hostname
      register: hostname_output
      become: true
    - debug: var=hostname_output.stdout_lines

在这个示例 Playbook 中,定义了两个主机(webserver1webserver2),并且通过 Ansible 的 command 模块执行了一个简单的命令以获取主机名。

步骤 4:运行 Ansible Playbook

最后,在命令行中运行 Playbook。在运行 Playbook 前,会要求你输入之前用于加密字符串的密码。

ansible-playbook -i hosts.yml playbook.yml --ask-vault-pass

当你成功输入密码后,Ansible 将执行 Playbook 并在远程主机上执行定义的任务。

结论

使用 Ansible Vault 将主机的用户名和密码存储在 Ansible Playbook 中可以确保这些敏感信息不会存储在明文文件中。通过这种方法,可以更安全地管理主机的凭据,并确保保护敏感信息不会被泄露。