首页 > 其他分享 >ansible练习七

ansible练习七

时间:2022-11-01 23:46:47浏览次数:46  
标签:name 练习 item ansible node1 greg yml

生成主机文件

将一个初始模板文件从 http://materials/hosts.j2 下载到 /home/greg/ansible

完成该模板,以便用它生成以下文件:针对每个清单主机包含一行内容,其格式与 /etc/hosts 相同

创建名为 /home/greg/ansible/hosts.yml 的 playbook ,它将使用此模板在 dev 主机组中的主机上生成文件 /etc/myhosts 。

该 playbook 运行后, dev 主机组中主机上的文件 /etc/myhosts 应针对每个受管主机包含一行内容:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.250.9 node1.lab.example.com node1

172.25.250.10 node2.lab.example.com node2

172.25.250.11 node3.lab.example.com node3

172.25.250.12 node4.lab.example.com node4

172.25.250.13 node5.lab.example.com node5

[greg@control ansible]$ wget http://materials/hosts.j2
[greg@control ansible]$ vim hosts.j2
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.250.9    node1.lab.example.com node1

172.25.250.10   node2.lab.example.com node2

172.25.250.11   node3.lab.example.com node3

172.25.250.12   node4.lab.example.com node4

172.25.250.13   node5.lab.example.com node5

[greg@control ansible]$ vim hosts.yml
---
- hosts: dev
  tasks:
    - name: /etc/myhosts
      template:
        src: hosts.j2
        dest: /etc/myhosts

[greg@control ansible]$ ansible-playbook hosts.yml 

PLAY [dev] ****************************************************************************

TASK [Gathering Facts] ****************************************************************
ok: [node1]

TASK [/etc/myhosts] *******************************************************************
changed: [node1]

PLAY RECAP ****************************************************************************
node1                      : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[greg@control ansible]$ ansible dev -a 'cat /etc/myhosts'
node1 | CHANGED | rc=0 >>
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

172.25.250.9    node1.lab.example.com node1

172.25.250.10   node2.lab.example.com node2

172.25.250.11   node3.lab.example.com node3

172.25.250.12   node4.lab.example.com node4

172.25.250.13   node5.lab.example.com node5

创建密码库

按照下方所述,创建一个 Ansible 库来存储用户密码:

    库名称为 /home/greg/ansible/locker.yml

    库中含有两个变量,名称如下:

        pw_developer,值为 Imadev

        pw_manager,值为 Imamgr

    用于加密和解密该库的密码为 whenyouwishuponastar

    密码存储在文件 /home/greg/ansible/secret.txt 中
[greg@control ansible]$ echo whenyouwishuponastar > /home/greg/ansible/secret.txt

[greg@control ansible]$ chmod 600 /home/greg/ansible/secret.txt

[greg@control ansible]$ vim ansible.cfg 
vault_password_file = /home/greg/ansible/secret.txt

[greg@control ansible]$ ansible-vault create locker.yml
pw_developer: Imadev
pw_manager: Imamgr

[greg@control ansible]$ ansible-vault view locker.yml 
pw_developer: Imadev
pw_manager: Imamgr

创建用户帐户

    从 http://materials/user_list.yml 下载要创建的用户的列表,并将它保存到 /home/greg/ansible

    在本次考试中使用在其他位置创建的密码库 /home/greg/ansible/locker.yml 。创建名为 /home/greg/ansible/users.yml 的 playbook ,从而按以下所述创建用户帐户:

        职位描述为 developer 的用户应当:

            在 dev 和 test 主机组中的受管节点上创建

            从 pw_developer 变量分配密码

            是补充组 devops 的成员

        职位描述为 manager 的用户应当:

            在 prod 主机组中的受管节点上创建

            从 pw_manager 变量分配密码

            是补充组 opsmgr 的成员

    密码采用 SHA512 哈希格式。

    您的 playbook 应能够在本次考试中使用在其他位置创建的库密码文件 /home/greg/ansible/secret.txt 正常运行。
[greg@control ansible]$ wget http://materials/user_list.yml
[greg@control ansible]$ vim users.yml

---
- name: dev and test create user
  hosts: dev,test
  vars_files:
    - user_list.yml
    - locker.yml
  tasks:
    - name: create group devops
      group:
        name: devops
        state: present
    - name: create user1
      user:
        name: "{{ item.name }}"
        groups: devops
        password: "{{ pw_developer | password_hash('sha512') }}"
      loop: "{{ users }}"
      when: item.job == "developer"

- name: prod create user
  hosts: prod
  vars_files:
    - user_list.yml
    - locker.yml
  tasks:
    - name: create group opsmgr
      group:
        name: opsmgr
        state: present
    - name: create user2
      user:
        name: "{{ item.name }}"
        groups: opsmgr
        password: "{{ pw_manager | password_hash('sha512') }}"
      loop: "{{ users }}"
      when: item.job == "manager"
      
[greg@control ansible]$ ansible-playbook users.yml 

PLAY [dev and test create user] ***********************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [node2]
ok: [node1]

TASK [create group devops] ****************************************************************************************************************************************************************************************
ok: [node2]
ok: [node1]

TASK [create user1] ***********************************************************************************************************************************************************************************************
changed: [node2] => (item={'name': 'bob', 'job': 'developer'})
skipping: [node2] => (item={'name': 'sally', 'job': 'manager'}) 
changed: [node1] => (item={'name': 'bob', 'job': 'developer'})
skipping: [node1] => (item={'name': 'sally', 'job': 'manager'}) 
changed: [node2] => (item={'name': 'fred', 'job': 'developer'})
changed: [node1] => (item={'name': 'fred', 'job': 'developer'})

PLAY [prod create user] *******************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************
ok: [node3]
ok: [node4]

TASK [create group opsmgr] ****************************************************************************************************************************************************************************************
ok: [node3]
ok: [node4]

TASK [create user2] ***********************************************************************************************************************************************************************************************
skipping: [node3] => (item={'name': 'bob', 'job': 'developer'}) 
skipping: [node4] => (item={'name': 'bob', 'job': 'developer'}) 
changed: [node3] => (item={'name': 'sally', 'job': 'manager'})
skipping: [node3] => (item={'name': 'fred', 'job': 'developer'}) 
changed: [node4] => (item={'name': 'sally', 'job': 'manager'})
skipping: [node4] => (item={'name': 'fred', 'job': 'developer'}) 

PLAY RECAP ********************************************************************************************************************************************************************************************************
node1                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node2                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node3                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
node4                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

标签:name,练习,item,ansible,node1,greg,yml
From: https://www.cnblogs.com/Archer-x/p/16849579.html

相关文章

  • UI动画练习 - CABasicAnimation:视图绕X/Y轴旋转(3D效果)
    视图3D旋转1-代码示例:以绕X轴旋转为例1#import"ViewController.h"2@interfaceViewController()3@property(strong,nonatomic)UIImageView*logoIV;4......
  • 顺序结构综合练习
    顺序结构综合练习数学头文件#include<cmath> 幂函数pow10(x)结果等于10^xpow()函数是cmath标头的库函数,用于查找幂的加数。计算x的y次方pow()函数语法:pow(x,y);......
  • 关于Python封装函数的几道练习题
    1.封装函数,可以判断一个数字是否为偶数deffunc(n):ifn%2==0:print("%d是偶数"%n)else:print("%d是奇数"%n)func(11)#11是奇数2.封装......
  • 陶笛@练习音准
    一、音准的理解歌唱和乐器演奏中所发的音高,能与一定律制的音高相符,称为音准。音准指的是我们对声音高低的把握能力,在歌唱中音准又包含了两方面的内容:一是指对一个长时间的......
  • 【Java复健指南08】OOP中级03【完结】-Object类和一些练习
    前情回顾:https://www.cnblogs.com/DAYceng/category/2227185.htmlObject类equals方法"=="与equals的区别"=="是一个比较运算符双等号既可以判断基本类型,又可以判断引......
  • java Stream流练习
    1.遍历/匹配(foreach/find/match)Stream也是支持类似集合的遍历和匹配元素的,只是Stream中的元素是以Optional类型存在的。Stream的遍历、匹配非常简单。List<Integer>list......
  • 宜立方商品管理课后练习
    这段时间在做传智播客的宜立方商城项目,在此将视频里的课后练习写出来分享一下目录​​编辑​​​​批量删除​​​​上下架​​编辑按思路先找到JS代码里对应的URL,在分析JS......
  • ansible练习六
    给node1添加一块5G的硬盘;给node2添加一块2G的硬盘;node3不添加硬盘。写一个partition.yml的playbook,满足如下要求:给所有的受控主机创建分区,创建2500M......
  • ATM+购物车项目实战练习
    ATM+购物车项目实战练习项目开发流程在实际的项目开发中,我们通常要经历项目需求分析,架构设计,分组开发,提交测试,交付上线等环节,而作为程序员的我们就可能要经历前三个环节......
  • ansible循环+判断
    循环1、with_items迭代列表比如Linux中依次需要安装多个软件包时,我们可以使用with_items迭代功能进行实现例如:安装httpd、samba、samba-client软件包时Vimb.yml---......