栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

ansible高级进阶

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ansible高级进阶

学习目标: 学习内容: 迭代with_items

迭代:当有需要重复性执行的任务时,可以使用迭代机制

  • 对迭代项的引用,固定变量名 “item”
  • 要在task中使用with_items给定要迭代的元素列表
  • 列表格式:字符串 字典
[root@zabbix_server ansible]# cat testitem.yml 
---
- hosts: all
  remote_user: root

  tasks:
  - name: create file
    file: name=/home/myscripts/{{ item }} state=touch
    when: ansible_hostname == "zabbix_agent2"
    with_items:
     - file1
     - file2
     - file3

[root@zabbix_server ansible]# ansible-playbook testitem.yml 

PLAY [all] **************************************************************************************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [172.28.102.130]
ok: [172.28.102.131]

TASK [create file] ******************************************************************************************************************************************************************************************
skipping: [172.28.102.131] => (item=file1) 
skipping: [172.28.102.131] => (item=file2) 
skipping: [172.28.102.131] => (item=file3) 
changed: [172.28.102.130] => (item=file1)
changed: [172.28.102.130] => (item=file2)
changed: [172.28.102.130] => (item=file3)

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

[root@zabbix_server ansible]# ansible all -m shell -a 'ls /home/myscripts'
172.28.102.130 | CHANGED | rc=0 >>
file1
file2
file3
hostname.sh
newfile
172.28.102.131 | CHANGED | rc=0 >>
hostname.sh
newfile
迭代子嵌套变量

[root@zabbix_server ansible]# ansible 172.28.102.130 -m shell -a 'getent passwd'|tail -3
user1:x:1000:1000::/home/user1:/bin/bash
user2:x:1001:1001::/home/user2:/bin/bash
user3:x:1002:1002::/home/user3:/bin/bash

[root@zabbix_server ansible]# ansible 172.28.102.130 -m shell -a 'getent group'|tail -3
g1:x:1000:
g2:x:1001:
g3:x:1002

template for if


roles

ansible自1.2版本引入的新特性,用于层次性、结构化的组织playbook。roles能够根据层次型结构装载变量,tasks以及handlers等,要使用roles只需要在playbook中使用include指令即可,简单来讲,roles就是分别通过变量,文件,任务,模块及处理器放置与单独的目录中,并可以便捷的include他们的一种机制,角色一版用于主机构建服务的场景中,但也可以用于构建守护进程等场景中,
复杂场景:建议使用roles,代码复用度高

  • 变更指定主机或主机组
  • 如命名不规范维护和传承成本大
  • 某些功能需多个playbook,通过include即可实现
    角色(roles):角色集合
    roles/
    mysql/
    httpd/
    nginx/
    memcached/

    roles目录结构

安装nginx的样例

[root@zabbix_server ansible]# ll
total 36
-rw-r--r-- 1 root root 19984 Apr 28 21:36 ansible.cfg
-rw-r--r-- 1 root root  1232 Apr 30 10:27 hosts
-rw-r--r-- 1 root root  1016 Apr 27 11:24 hosts.bak
-rw-r--r-- 1 root root    59 May  2 16:00 nginx_role.yml
drwxr-xr-x 3 root root  4096 May  2 16:03 roles
[root@zabbix_server ansible]# tree roles/
roles/
└── nginx
    ├── tasks
    │   ├── group.yml
    │   ├── main.yml
    │   ├── restart.yml
    │   ├── start.yml
    │   ├── template.yml
    │   ├── user.yml
    │   └── yum.yml
    └── templates
        └── nginx.conf.j2

3 directories, 8 files
[root@zabbix_server ansible]# pwd
/etc/ansible

[root@zabbix_server tasks]# cat group.yml 
- name: create group
  group: name=nginx gid=80
[root@zabbix_server tasks]# cat user.yml 
- name: create user
  user: name=nginx uid=80 group=nginx system=yes shell=/sbin/nologin
[root@zabbix_server tasks]# cat yum.yml 
- name: install package
  yum: name=nginx
[root@zabbix_server tasks]# cat start.yml 
- name: start service
  service: name=nginx state=started enabled=yes
[root@zabbix_server tasks]# cat main.yml 
- include: group.yml
- include: user.yml
- include: yum.yml
- include: template.yml
- include: start.yml
[root@zabbix_server tasks]# cat template.yml 
- name: copy template
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850682.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号