ansible 批量配置初始化主机环境

Tree

my_init/
├── hosts
├── roles
│   ├── 1_copy_repo
│   │   ├── files
│   │   │   ├── CentOS-Base.repo
│   │   │   └── epel-7.repo
│   │   └── tasks
│   │       ├── main.retry
│   │       └── main.yml
│   ├── 2_copy_ssh_key
│   │   └── tasks
│   │       ├── main.retry
│   │       └── main.yml
│   ├── 3_close_selinux
│   │   └── tasks
│   │       ├── main.yml
│   │       └── selinux.yml
│   ├── 4_crontab
│   │   └── tasks
│   │       └── main.yml
│   ├── 5_firewalld
│   │   └── tasks
│   │       └── main.yml
│   ├── 6_kernal_optimization
│   │   ├── files
│   │   └── task
│   ├── 7_install_some_must
│   │   └── tasks
│   │       ├── jdk.yml
│   │       ├── main.yml
│   │       ├── mysql.yml
│   │       ├── nginx.yml
│   │       └── php.yml
│   ├── 8_yum_some_common
│   │   └── tasks
│   │       └── main.yml
│   └── 9_sshconfig
│       ├── files
│       │   └── ssh.sh
│       └── tasks
│           └── main.yml
├── site.retry
└── site.yml

site.yml

---
- hosts: all
  roles:
   - 1_copy_repo 
   - 2_copy_ssh_key  
   - 3_close_selinux 
   - 4_crontab  
   - 5_firewalld  
   #- 6_kernal_optimization 
   - 7_install_some_must
   - 8_yum_some_common 
   - 9_sshconfig
  • 一共9个角色
  • 1_copy_repo:拷贝阿里云的repo源到目标主机
  • 2_copy_ssh_key:拷贝SSHkey到目标主机
  • 3_close_selinux:关闭selinux
  • 4_crontab:设置时间
  • 5_firewalld:配置一些允许访问的端口和主机
  • 6_kernal_optimization:内核优化,,还没写好
  • 7_install_some_must:安装一些需求的软件
  • 8_yum_some_common:安装一些普通软件vim等
  • 9_sshconfig:优化ssh连接速度

1_copy_repo

参照我写的ansible 一键部署HAproxy+lnmp中base角色

2_copy_ssh_key

---
- name: set authorized key took from file
  authorized_key:
    user: root
    state: present
    key: "{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
  • 调用authorized_key模块完成拷贝ssh公钥的操作

3_close_selinux

main.yml

---
- name: get selinux
  shell: getenforce
  register: sestatus
- include: selinux.yml 
  when: sestatus.stdout != "Disabled"
  • getenforce获取远程主机selinux是否开启
  • 开启则包含执行selinux.yml
  • 不进行判断的话,如果selinux已经关闭了,就会报错

selinux.yml

---
- shell: setenforce 0
- shell: sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/sysconfig/selinux
- shell: sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
- shell: sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/sysconfig/selinux
- shell: sed -i "s/^SELINUX=permissive/SELINUX=disabled/g" /etc/selinux/config
  • 关闭/etc/sysconfig/selinux
  • 关闭/etc/selinux/config

另一种关闭selinux的写法

# Enable SELinux
- selinux:
    policy: targeted
    state: enforcing

# Put SELinux in permissive mode, logging actions that would be blocked.
- selinux:
    policy: targeted
    state: permissive

# Disable SELinux
- selinux:
    state: disabled
  • 直接调用selinux模块进行selinux配置

还有种就是使用script模块调用脚本,不写了不写了- -

4_crontab

---
- cron: 
    minute: '*/40'
    state: present
    job: "/usr/sbin/ntpdate time7.aliyun.com >/dev/null 2>&1"
  • 调用设置40分钟一次
  • 然后设置任务
    -使用crontab -e可以查看到

5_firewalld

---
- shell: systemctl enable firewalld
- firewalld:
    port: "{{ item }}"
    permanent: true
    state: enabled
  loop:
    - 80/tcp
    - 8089/tcp
- firewalld:
    source: 192.168.65.0/24
    zone: internal
    state: enabled
    permanent: true
- shell: systemctl restart firewalld
  • 在公网开放80 8089端口
  • 在内网网段开放192.168.65.0/24网段

6_kernal_optimization

  • &%*(&(&&%没写好

7_install_some_must

tree

└── tasks
    ├── jdk.yml
    ├── main.yml
    ├── mysql.yml
    ├── nginx.yml
    └── php.yml

nginx.yml

---
- name: Install nginx
  yum: name=nginx state=present

- name: restart nginx
  service: name=nginx state=restarted
  • 有这么多的要安装,其实都类似,会一个其他的都会
---
- include: nginx.yml
  when: install_nginx

- include: php.yml
  when: install_php

- include: mysql.yml
  when: install_mysql
  • 判断install_nginx这个值是否为真,再去安装nginx,其他同理
  • install_nginx的值在hosts里边定义
  • 若是还想安装别的软件可以继续include包含yml文件

放hosts

#安装lnmp
[setup_lnmp]
192.168.65.144
[common]

#安装mysql
[setup_mysql]

[setup_mysql_slave]

#安装java
[setup_java]

#安装java+mysql
[setup_java_mysql]

#安装java+lnmp
[setup_java_lnmp]

#安装nginx
[setup_nginx]

#######################根据实际情况调整##########################
#默认参数
[all:vars]
install_php=false
install_nginx=false
install_mysql=false
is_slave=false
install_jdk=false

[setup_lnmp:vars]
install_php=true
install_nginx=true
install_mysql=true

[setup_mysql:vars]
install_mysql=true
is_slave=false

[setup_mysql_slave:vars]
install_mysql=true
is_slave=true

[setup_java:vars]
install_jdk=true

[setup_java_mysql:vars]
install_jdk=true
install_mysql=true

[setup_java_lnmp:vars]
install_jdk=true
install_php=true
install_nginx=true
install_mysql=true

[setup_nginx:vars]
install_nginx=true

[common:vars]

  • 例如:要安装lnmp,就把ip写到setup_lnmp组里边
  • 再在下方组里定义变量install_php的值,这是这个组特有的变量,这样来配置主机,妙啊妙啊~
  • 而其他角色照常工作,这个只是用来控制7_install_some_must角色

8_yum_some_common

- name: install some sotfware
  yum: 
    name: "{{item}}"
    state: latest
  loop:
    - vim
    #- upzip
    - ntpdate 
  • 安装vim
  • 安装ntpdate

9_sshconfig

ssh.sh

#!/usr/bin/sh

sed -i 's/\#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
sed -i 's/.*GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/sshd_config

  • 修改UseDNS为no
  • 修改GSSAPIAuthentication为no

main.yml

---
- script: ssh.sh
- service: name=sshd state=restarted
  • scrpit模块调用脚本
  • 重启服务

结果

部分截图

部分截图

总结

  • 除了用yum安装,还可以用rpm包去安装,还不用联网,不过我暂时不想弄(好吧,太麻烦,我不会= =)
  • 通过一台安装ansible的主机可以批量初始化主机,节省时间
  • 脚本只要编写一遍就可以一直用着
  • 运维人员只需要优化脚本就可以了

欢迎关注、点赞、收藏、留言交流。

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