(转)08Ansible角色

08Ansible角色

第一章 Ansible rolers介绍

官方地址:

https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html

第二章 角色目录规划

01.目录说明:

官方的目录结构,必须这样定义!

[root@m01 ~]# cd /etc/ansible/roles/
[root@m01 /etc/ansible/roles]# tree
.
├── nfs                   #角色名称
│   ├── files             #存放需要copy的文件
│   ├── handlers          #触发任务剧本
│   ├── tasks             #具体任务剧本
│   ├── templates         #模版文件
│   └── vars              #存放变量文件

02.创建项目目录

因为每台服务器都需要创建用户组,用户,安装服务等,所以我们可以将这些相同的任务单独创建一个init初始化角色。

角色规划:

1.init      #初始化任务
2.rsync     #rsync服务
3.nfs       #nfs服务
4.lsyncd    #lsyncd服务

创建角色目录:

[root@m01 ~]# cd /etc/ansible/roles/
[root@m01 /etc/ansible/roles]# mkdir {init,nfs,rsync,lsyncd}/{vars,tasks,templates,handlers,files} -p     
[root@m01 /etc/ansible/roles]# tree
/etc/ansible/roles/
.
├── init
│   ├── files
│   ├── handlers
│   ├── tasks
│   ├── templates
│   └── vars
├── lsyncd
│   ├── files
│   ├── handlers
│   ├── tasks
│   ├── templates
│   └── vars
├── nfs
│   ├── files
│   ├── handlers
│   ├── tasks
│   ├── templates
│   └── vars
├── rsync
│   ├── files
│   ├── handlers
│   ├── tasks
│   ├── templates
│   └── vars
└── site.yml

第三章 编写init角色剧本

01.创建对应目录

mkdir /etc/ansible/roles/init/{vars,tasks,templates,handlers,files} -p

02.编写任务剧本

[root@m01 ~]# cat /etc/ansible/roles/init/tasks/main.yml 
#01.配置base源
- name: 01_configure_yum_repos
  yum_repository:
    name: base 
    description: base yum repo
    baseurl:
      - http://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
    gpgcheck: no
#02.配置epel源
- name: 02_configure_yum_Repos
  yum_repository:
    name: epel
    description: epel yum repo
    baseurl:
      - https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
    gpgcheck: no
#03.安装常用软件
- name: 03_install_server
  yum: 
    name: "{{ packages }}" 
  vars:
    packages:
    - ntpdate 
    - lsof
    - tree 
    - iftop
    - iotop
#04.创建用户组
- name: 04_create_group
  group:
    name: www
    gid: 666
#05.创建用户
- name: 05_create_user
  user:
    name: www
    uid: 666
    group: www 
    shell: /sbin/nologin
    create_home: no
#06.创建数据目录和脚本目录
- name: 06_create_dir
  file:
    path: "{{ item }}"
    state: directory
    mode: '0755'
  loop:
    - /data
    - /server/scripts
#07.创建同步时间定时任务
- name: 07_cron_ntpdate
  cron: 
    name: Time_Update
    minute: "*/5"
    job: '/sbin/ntpdate time1.aliyun.com'
#08.拷贝优化后的ssh配置文件
- name: 08_copy_ssh
  template: 
    src: sshd_config.j2
    dest: /etc/ssh/sshd_config 
    mode: '0600'
    backup: yes
  notify: restart sshd

03.编写jinja模版文件

[root@m01 ~]# tree /etc/ansible/roles/init/templates/
/etc/ansible/roles/init/templates/
└── sshd_config.j2

04.编写handlers文件

[root@m01 ~]# cat /etc/ansible/roles/init/handlers/main.yml 
- name: restart sshd 
  service: 
    name: sshd 
    state: restarted

第四章 编写rsync角色剧本

01.创建对应目录

mkdir /etc/ansible/roles/rsync/{vars,tasks,templates,handlers,files} -p

02.编写任务剧本

[root@m01 ~]# cat /etc/ansible/roles/rsync/tasks/main.yml    
#01.安装rsync服务
  - name: 01_install_rsync
    yum: 
      name: rsync 
      state: installed
#02.拷贝配置文件模版
  - name: 02_copy_conf
    template:
      src: "{{ item.src}}"
      dest: "/etc/{{ item.dest }}"
      mode: "{{ item.mode }}"
      backup: yes
    loop:
      - { src: 'rsyncd.conf.j2',  dest: 'rsyncd.conf',  mode: '0644' }
      - { src: 'rsync.passwd.j2', dest: 'rsync.passwd', mode: '0600' }
    notify:
      - restart rsyncd
#03.创建备份目录 
  - name: 03_create_backup_dir
    file: 
      dest: "{{ item }}"
      state: directory 
      owner: www 
      group: www
    loop:
      - /backup
      - /data 
#04.启动服务
  - name: 04_start_rsynd
    service: 
      name: rsyncd 
      state: started 
      enabled: yes

03.编写jinja模版文件

[root@m01 ~]# tree /etc/ansible/roles/rsync/templates/
/etc/ansible/roles/rsync/templates/
├── rsyncd.conf.j2
└── rsync.passwd.j2

[root@m01 ~]# cat  /etc/ansible/roles/rsync/templates/rsync.passwd.j2 
{{ user_rsyncd }}:{{ passwd_rsyncd }}

[root@m01 ~]# cat  /etc/ansible/roles/rsync/templates/rsyncd.conf.j2 
uid = www 
gid = www 
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = {{ user_rsyncd }}
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
[backup]
path = /backup
[data]
path = /data

04.编写变量文件

[root@m01 ~]# cat /etc/ansible/roles/rsync/vars/main.yml 
user_rsyncd: rsync_backup 
passwd_rsyncd: oldzhang 

05.编写handlers文件

[root@m01 ~]# cat /etc/ansible/roles/rsync/handlers/main.yml 
- name: restart rsyncd
  service: 
    name: rsyncd 
    state: restarted

06.编写主任务文件

[root@m01 ~]# cat /etc/ansible/roles/site.yml 
- hosts: rsync 
  roles:
    - init
    - rsync

07.最终目录

[root@m01 ~]# tree /etc/ansible/roles/rsync/
/etc/ansible/roles/rsync/
├── files
├── handlers
│   └── main.yml
├── tasks
│   └── main.yml
├── templates
│   ├── rsyncd.conf.j2
│   └── rsync.passwd.j2
└── vars
    └── main.yml

第四章 编写nfs角色剧本

01.创建对应目录

02.编写任务剧本

03.编写jinja模版文件

04.编写变量文件

05.编写handlers文件

06.编写主任务文件

第五章 编写lsyncd角色剧本

01.创建对应目录

02.编写任务剧本

03.编写jinja模版文件

04.编写变量文件

05.编写handlers文件

06.编写主任务文件

小礼物走一走,来简书关注我

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 第一章 Ansible rolers介绍 官方地址: 第二章 角色目录规划 01.目录说明: 官方的目录结构,必须...
    被运维耽误的厨子阅读 1,961评论 0 4
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,837评论 0 5
  • 一、Playbook语法 Ansible-playbook采用YAML语法编写。 示例:[root@LOCALHO...
    CaiGuangyin阅读 31,585评论 3 13
  • 你自己没有本事,怪谁?给不了她要的,怪谁?她这样的生活她愿意吗?怪谁,只能怪自己没有本事。
    穷的只剩下代码阅读 105评论 0 0
  • 不得不赞一下我大女儿的记性,真真是极好的,只是有时候用的地方太让人尴尬,还让人哭笑不得。 在她三岁多点的时候我们带...
    慕慕小姐阅读 361评论 0 2