在ansible playbooks中组织/优化逻辑

时间:2017-12-21 16:24:25

标签: ansible

我有下面的ansible剧本。它完成了它的工作,但我想知道是否可以改进维护,冗余,可读性,格式化等。

我有点担心我目前的做法会导致一些杂乱无章的剧本,所以我们非常欢迎任何建议或建议让这个更易于理解。

---
# Below will do:
#
# 1) Install nano
# 2) Create 2 users with password, home dir and add to sudoers
# 3) Set password for root user
# 4) Copy private/public key pair and authorized_keys to users home dir.


- hosts: cont
  any_errors_fatal: true 
  user: root

  vars:
    password: $6$BqaK91TChphw6$EJRKoOD87VneNhASOh25b7sPg4xVzmE3noeXwgJGhTfs6ROVlh4ptLcXrBpRSAQ.9TdqOCzJmvNmQAdLVl5OR.
    root_password: $6$BqaK91TChphw6$haQjB0BdF6pAfUe5FicDM8w.rC34WX2a5y0Tvt1xdJLZVPRmGsphh2Pj.1HIiynCPAkJHPBQJe1PV0utVJ1781
    users:
      - username: usera
      - username: userb
  tasks:

  - name: Install the package "nano"
    apt:
      name: nano


  - name: Change password for root user
    user: name=root
          password={{root_password}}
  - name: Add users | create users, shell, home dirs
    user: name={{ item.username }}
          groups="sudo"
          password={{password}}
          shell=/bin/bash
          createhome=yes
          comment='created with ansible'
    with_items: '{{users}}'

  - name: Copy private/public key to home dir for users
    copy:
      src=../linux-files/user/.ssh
      dest=/home/{{ item.username }}/
      owner={{ item.username }}
      group={{ item.username }}
    with_items: '{{users}}'      

  - name: Copy private/public key to home dir for root
    copy:
      src: ../linux-files/root/.ssh
      dest: /home/root/

1 个答案:

答案 0 :(得分:2)

您可以将您的剧本分成几个文件,以使其更具可扩展性和组织性。您可以创建一个名为tasks的目录,并将它们包含在主剧本中,而不是将您的任务分组到一个文件中。在best practices中您有一个示例,但在您的情况下,您可以这样简单:

  • vars:包含您的vars的目录
  • main.yaml:你的实际剧本
  • 角色
    • 任务:包含您的任务的目录和使用import_tasks
    • 的主要名称

如果需要,您甚至可以在主要剧本中使用import个其他剧本。这取决于你的目标。