ansible判断变量为空_Ansible如何为我的家带来和平

ansible判断变量为空

几个月前,我阅读了Marco Bravo的文章如何使用Ansible在Opensource.com 上记录过程 。 我会承认,当时我还不太了解。 我没有积极地使用Ansible ,我还记得我认为它看起来比它值得的工作还要多。 但是我胸怀开阔,决定花时间深入研究Ansible。

我很快找到了借口,踏上我第一次真正的Ansible冒险之旅:重新使用旧笔记本电脑,如如何使旧计算机再次可用 。 我一直喜欢与旧计算机一起玩,而用现代方法自动化某些东西的前景激起了我的兴趣。

任务

今年早些时候,我给了我7岁的女儿一个改头换面的Dell Mini 9,运行了某种Ubuntu风格。 起初,我的六岁女儿对此并不在意,但是随着音乐的演奏,她发现了有趣的节目,她的兴趣开始了。

我意识到我需要尽快为她再建一个。 而且任何父母中有小孩子的父母都可能认同我的困境。 如果两个孩子都没有得到相同的东西,就会发生冲突。 相似的玩具,相似的衣服,相似的鞋子……有时颜色,形状和闪烁的灯光必须相同。 我相信他们会注意到笔记本电脑配置上的任何差异,这将成为争论的焦点。 因此,我需要这些笔记本电脑具有相同的功能。

另外,我还带着小孩,我怀疑我会重建这些东西几次。 失败,事故,升级,腐败……这有可能成为一个时光倒流。

由于两个女孩共享一个Dell Mini 9并不是一个切实可行的解决方案,因此我从一堆旧硬件中抓取了一台Dell D620,升级了RAM,装入了便宜的SSD,然后开始酝酿可重复的过程来制造这些孩子的计算机配置。

如果您考虑一下,此任务对于配置管理系统而言似乎是理想的。 我需要一些东西来记录我在做什么,以便可以轻松地重复。

救急

我没有尝试设置完整的预启动执行环境(PXE)以支持偶尔安装笔记本电脑。 我想教孩子们为我做一些安装工作(另一种自动化方式,哈!)。

在这次笔记本电脑实验中,我决定使用Debian 32位作为起点,因为它似乎在较旧的硬件上效果最佳。 引导YAML脚本旨在进行最低限度的OS安装并将其提高到某种标准。 它依赖于非root帐户才能通过SSH和其他方式使用。 由于最小的操作系统安装通常只包含很少对Ansible有用的内容,因此我使用以下命令命中一台主机并提示我以特权升级的方式登录:

 $ ansible-playbook bootstrap.yml -i '192.168.0.100,' -u jfarrell -Kk 

该脚本利用Ansible的raw模块设置一些基本要求。 它确保Python可用,升级操作系统,设置Ansible控制帐户,传输SSH密钥以及配置sudo特权升级。 引导完成后,一切都应准备就绪,以使该节点完全参与我较大的Ansible库存。 我发现引导最低限度的OS安装非常细微(如果有兴趣,我将在该主题上写另一篇文章)。

帐户YAML设置脚本用于为每个家庭成员设置(或重置)用户帐户。 这使我们拥有的少量计算机上的用户ID(UID)和组ID(GID)保持一致,并且可以在需要时用于修复锁定的帐户。 是的,我知道我可以设置网络信息服务或LDAP身份验证,但是我拥有的帐户数量很少,我希望保持这些系统非常简单。 这是我发现特别有用的摘录:


   
     
     
     
     
---
- name
: Set user accounts
  hosts
: all
  gather_facts
: false
  become
: yes
  vars_prompt
:
    - name
: passwd
      prompt
: "Enter the desired ansible password:"
      private
: yes

  tasks
:
  - name
: Add child 1 account
    user
:
      state
: present
      name
: child1
      password
: "{ { passwd | password_hash('sha512') }}"
      comment
: Child One
      uid
: 888
      group
: users
      shell
: /bin/bash
      generate_ssh_key
: yes
      ssh_key_bits
: 2048
      update_password
: always
      create_home
: yes

vars_prompt部分提示我输入密码,将其输入Jinja2转换以生成所需的密码哈希。 这意味着我不需要将密码硬编码到YAML文件中,并且可以运行它来根据需要更改密码。

软件安装YAML文件仍在不断发展。 它包括用于sysadmin的基本实用程序集,以及我的用户需要的东西。 这主要包括确保在每台计算机上安装相同的图形用户界面(GUI)界面以及所有相同的程序,游戏和媒体文件。 这是我的小孩子的软件摘录:


   
     
     
     
     
 - name : Install kids software
    apt
:
      name
: "{ { packages }}"
      state
: present
    vars
:
      packages
:
     - lxde
      - childsplay
      - tuxpaint
      - tuxtype
      - pysycache
      - pysiogame
      - lmemory
      - bouncy

我使用虚拟机创建了这三个Ansible脚本。 当它们完美时,我在D620上对其进行了测试。 然后,转换Mini 9很快。 我只是简单地加载了最小的Debian安装,然后运行了引导程序,帐户和软件配置。 然后,两个系统的功能相同。

一段时间以来,两个姐妹都享受着各自的计算机,比较使用情况并探索软件功能。

关键时刻

几周后出现了不可避免的情况。 我的大女儿终于得出结论,她的粉红色Dell Mini 9电源不足。 她姐姐的D620具有出色的功能和屏幕空间。 YouTube是新的风潮,而Mini 9赶不上潮流。 如您所料,可怜的Mini 9废弃了。 她想要一台新机器,却不能分享她妹妹的东西。

我有一堆D620。 我更换了BIOS电池,为其提供了新的SSD,并升级了RAM。 向旧硬件注入新生命的另一个完美示例。

我从源代码管理中提取了Ansible脚本,而我所需要的一切就在那里:引导程序,帐户设置和软件。 到这个时候,我已经忘记了很多特定的软件安装信息。 但是,诸如帐户UID和所有要安装的软件包之类的详细信息均已清楚记录在案并可以使用。 尽管我肯定可以通过查看其他机器来弄清楚,但无需花时间! Ansible在YAML中清楚地列出了所有内容。

YAML文档不仅很有价值,而且Ansible的自动化简化了新安装的工作。 通过USB记忆棒安装最小的Debian OS大约需要15分钟。 随后使用Ansible进行系统整形以进行最终用户部署仅用了9分钟。 最终用户验收测试成功了,我的家人进入了计算平静的新时代(其他父母会明白的!)。

结论

花时间学习和练习Ansible,通过本练习向我展示了其自动化和文档编制功能的真正价值。 花几个小时弄清楚第一个示例的细节,可以在我需要配置或修复计算机时节省时间。 YAML清晰易读,并且由于Ansible的幂等性,因此易于测试和完善。 当我有新想法或我的孩子有新要求时,使用Ansible控制本地虚拟机进行测试是一种节省时间的宝贵工具。

在空闲时间执行sysadmin任务可能很有趣。 花费时间来自动化和记录您的工作将在将来带来回报。 Ansible无需研究和重新学习您已经解决的一堆东西,而是将您的工作记录在案并准备好进行应用,以便您可以转移到其他新的有趣事物上!

翻译自: https://opensource.com/article/19/9/ansible-documentation-kids-laptops

ansible判断变量为空

你可能感兴趣的:(python,linux,人工智能,java,操作系统)