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

2018-06-14  本文已影响0人  泡面_b7f5

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

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') }}"

3_close_selinux

main.yml

---
- name: get selinux
  shell: getenforce
  register: sestatus
- include: selinux.yml 
  when: sestatus.stdout != "Disabled"

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

另一种关闭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

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

4_crontab

---
- cron: 
    minute: '*/40'
    state: present
    job: "/usr/sbin/ntpdate time7.aliyun.com >/dev/null 2>&1"

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

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

放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]

8_yum_some_common

- name: install some sotfware
  yum: 
    name: "{{item}}"
    state: latest
  loop:
    - vim
    #- upzip
    - 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

main.yml

---
- script: ssh.sh
- service: name=sshd state=restarted

结果

部分截图
部分截图

总结

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

上一篇 下一篇

猜你喜欢

热点阅读