├── inventory ├── group_vars │ └── all.yml └── ansible.cfg ├── tests └── testing.hosts └── playbooks ├── roles └── ansible-role-base │ ├── handlers │ └── main.yml │ ├── vars │ ├── main.yml │ └── RedHat.yml │ ├── templates │ └── resolv.conf.j2 │ ├── tasks │ ├── selinux.yml │ ├── tuneservice_RedHat.yml │ └── main.yml │ ├── meta │ └── main.yml │ ├── defaults │ └── main.yml │ └── README.md └── testing.yml /inventory/group_vars/all.yml: -------------------------------------------------------------------------------- 1 | --- 2 | -------------------------------------------------------------------------------- /tests/testing.hosts: -------------------------------------------------------------------------------- 1 | localhost ansible_connection=local 2 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/handlers/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file: roles/base/handlers/main.yml 3 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/vars/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file: roles/base/vars/main.yml 3 | 4 | 5 | -------------------------------------------------------------------------------- /inventory/ansible.cfg: -------------------------------------------------------------------------------- 1 | [defaults] 2 | ansible_managed = Ansible managed: modified on %Y-%m-%d %H:%M:%S by {uid} on {host} 3 | host_key_checking = False 4 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/templates/resolv.conf.j2: -------------------------------------------------------------------------------- 1 | {% if base_nameserver_search %} 2 | search {{ base_nameserver_search }} 3 | {% endif %} 4 | {% for nameserver in base_nameserver_servers %} 5 | nameserver {{ nameserver }} 6 | {% endfor %} 7 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/vars/RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file: roles/base/vars/RedHat.yml 3 | service_redhat6: 4 | - ip6tables 5 | - netfs 6 | - postfix 7 | - mdmonitor 8 | - iscsi 9 | - iscsid 10 | 11 | service_redhat7: 12 | - microcode 13 | - postfix 14 | - NetworkManager 15 | -------------------------------------------------------------------------------- /playbooks/testing.yml: -------------------------------------------------------------------------------- 1 | - name: system base configure 2 | hosts: localhost 3 | vars: 4 | host_name: testing 5 | packages_extension: 6 | - gcc 7 | base_selinux_disabled: true 8 | base_nameserver_servers: 9 | - 114.114.114.114 10 | roles: 11 | - ansible-role-base 12 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/tasks/selinux.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file: roles/base/tasks/selinux.yml 3 | # Disabled SELinux 4 | 5 | - name: Install libselinux-python 6 | yum: name=libselinux-python state=present 7 | tags: selinux_disabled 8 | 9 | - name: Disabled SELinux 10 | selinux: state=disabled 11 | tags: selinux_disabled 12 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/meta/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | galaxy_info: 3 | author: z@zstack.net 4 | description: System base configure for RedHat/CentOS. 5 | company: "" 6 | license: license (BSD, MIT) 7 | min_ansible_version: 1.6 8 | platforms: 9 | - name: EL 10 | versions: 11 | - 6 12 | - 7 13 | categories: 14 | - system 15 | dependencies: [] 16 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/defaults/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file: roles/base/defaults/main.yml 3 | host_name: localhost 4 | 5 | packages_base: 6 | - wget 7 | - lsof 8 | - sysstat 9 | - dstat 10 | - openssh-clients 11 | 12 | packages_extension: [] 13 | 14 | base_selinux_disabled: false 15 | 16 | # nameserver 17 | base_nameserver_search: [] 18 | base_nameserver_servers: 19 | - 114.114.114.114 20 | - 8.8.8.8 21 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/tasks/tuneservice_RedHat.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file :roles/base/tasks/tuneservice_RedHat.yml 3 | # Disabled unnecessary services 4 | - name: Disabled unnecessary services on RedHat/CentOS6 5 | service: name={{ item }} state=stopped enabled=no 6 | with_items: service_redhat6 7 | tags: tuneservice_RedHat6 8 | ignore_errors: True 9 | when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == '6' 10 | 11 | - name: Disabled unnecessary services on RedHat/CentOS7 12 | service: name={{ item }} state=stopped enabled=no 13 | with_items: 14 | - "{{ service_redhat7 }}" 15 | tags: tuneservice_RedHat7 16 | ignore_errors: True 17 | when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == '7' 18 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/tasks/main.yml: -------------------------------------------------------------------------------- 1 | --- 2 | # file: roles/base/tasks/main.yml 3 | - name: Include OS-specific variables. 4 | include_vars: "{{ ansible_os_family }}.yml" 5 | 6 | # Disabled SELinux 7 | - include: selinux.yml 8 | when: base_selinux_disabled 9 | 10 | # Configure nameserver 11 | - name: Configure nameserver 12 | template: src=resolv.conf.j2 dest=/etc/resolv.conf 13 | tags: nameserver 14 | 15 | # Configure hostname 16 | - name: Configure hostname 17 | hostname: name={{ host_name }} 18 | 19 | # Install tools 20 | - name: Install Base tools 21 | yum: name={{ item }} state=present 22 | with_items: 23 | - "{{ packages_base }}" 24 | 25 | - name: Install Extension tools 26 | yum: name={{ item }} state=present 27 | with_items: 28 | - "{{ packages_extension }}" 29 | when: packages_extension 30 | 31 | # tuneservice 32 | - include: tuneservice_RedHat.yml 33 | when: ansible_os_family == 'RedHat' 34 | -------------------------------------------------------------------------------- /playbooks/roles/ansible-role-base/README.md: -------------------------------------------------------------------------------- 1 | # Ansible Role: base 2 | 3 | RedHat/CentOS system base configure 4 | 5 | ## Requirements 6 | 1. 执行本role前,要先确认系统的repo配置,如果是用系统默认的repo则不用做其他设置,否则请先设置repo。 7 | 2. 系统一定要关闭selinux,如果没有关闭,可以在设置repo后设置本role的`base_selinux_disabled`为true,本role会自动禁用selinux. 8 | 3. 如果采用本role关闭了selinux,建议执行其他playbooks之前,先重启系统。 9 | 10 | ## Role Variables 11 | 12 | Available variables are listed below. 13 | 14 | ### `defaults/main.yml` 15 | *default lower priority variables for this role* 16 | 17 | * `host_name: localhost` 18 | 19 | * `packages_base:` 20 | ``` 21 | - wget 22 | - lsof 23 | - sysstat 24 | - dstat 25 | - openssh-clients 26 | ``` 27 | 28 | * `packages_extension: []` 29 | 30 | * `base_selinux_disabled: false` 31 | 32 | * `base_nameserver_search: []` 33 | 34 | * `base_nameserver_servers:` 35 | ``` 36 | - 114.114.114.114 37 | - 8.8.8.8 38 | ``` 39 | 40 | ### `vars/RedHat.yml` 41 | *The variables for RedHat/CentOS* 42 | 43 | * `service_redhat6:` 44 | ``` 45 | - ip6tables 46 | - netfs 47 | - postfix 48 | - mdmonitor 49 | - iscsi 50 | - iscsid 51 | ``` 52 | 53 | * `service_redhat7:` 54 | ``` 55 | - microcode 56 | - postfix 57 | - NetworkManager 58 | ``` 59 | 60 | ## Dependencies 61 | 62 | None. 63 | 64 | ## Example Playbook 65 | 66 | - name: system base configure 67 | hosts: servers 68 | vars: 69 | host_name: example 70 | packages_extension: 71 | - gcc 72 | base_selinux_disabled: true 73 | base_nameserver_servers: 74 | - 114.114.114.114 75 | roles: 76 | - base 77 | 78 | ## License 79 | 80 | MIT / BSD 81 | 82 | ## Author Information 83 | 84 | z@zstack.net 85 | --------------------------------------------------------------------------------