From 0109a69e8cfa42c898f31b782117c121efc67395 Mon Sep 17 00:00:00 2001 From: Guillaume Tredez Date: Wed, 18 Oct 2017 21:23:34 +0200 Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20du=20projet=20Ansible=20de=20pr?= =?UTF-8?q?=C3=A9sentation.=20=20*=20D=C3=A9ploiement=20d'un=20motd=20=20*?= =?UTF-8?q?=20Configuration=20des=20locales=20et=20timezone=20=20*=20Insta?= =?UTF-8?q?llation=20de=20paquets=20=20*=20D=C3=A9ploiement=20d'une=20t?= =?UTF-8?q?=C3=A2che=20cron=20=20*=20Role=20MySQL=20pour=20cr=C3=A9er=20de?= =?UTF-8?q?s=20utilisateurs=20et=20DB=20=20*=20Inventaire=20et=20variables?= =?UTF-8?q?=20d'exemple?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 19 +++++++++++++++++-- configuration.yml | 15 +++++++++++++++ group_vars/all | 20 ++++++++++++++++++++ group_vars/centos | 5 +++++ group_vars/debian | 4 ++++ group_vars/mysql-server | 8 ++++++++ host_vars/hostcentos | 7 +++++++ host_vars/hostdebian | 27 +++++++++++++++++++++++++++ mon_inventaire | 12 ++++++++++++ roles/common/handlers/main.yml | 4 ++++ roles/common/tasks/centosbase.yml | 13 +++++++++++++ roles/common/tasks/debianbase.yml | 24 ++++++++++++++++++++++++ roles/common/tasks/main.yml | 28 ++++++++++++++++++++++++++++ roles/common/templates/motd.j2 | 7 +++++++ roles/mysql/tasks/main.yml | 25 +++++++++++++++++++++++++ 15 files changed, 216 insertions(+), 2 deletions(-) create mode 100644 configuration.yml create mode 100644 group_vars/all create mode 100644 group_vars/centos create mode 100644 group_vars/debian create mode 100644 group_vars/mysql-server create mode 100644 host_vars/hostcentos create mode 100644 host_vars/hostdebian create mode 100644 mon_inventaire create mode 100644 roles/common/handlers/main.yml create mode 100644 roles/common/tasks/centosbase.yml create mode 100644 roles/common/tasks/debianbase.yml create mode 100644 roles/common/tasks/main.yml create mode 100644 roles/common/templates/motd.j2 create mode 100644 roles/mysql/tasks/main.yml diff --git a/README.md b/README.md index 95ab860..f24b842 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,18 @@ -# noskillbrain_ansible_prez +# Noskillbrain: projet Ansible -Repo de prez ansible, article https://noskillbrain.fr/2017/10/18/ansible/ \ No newline at end of file +Projet de présentation Ansible du blog noskillbrain.fr, article https://noskillbrain.fr/2017/10/18/ansible/ + +## Prérequis + +* Ansible >= 2.4.0 +* https://noskillbrain.fr/2017/10/18/ansible/ + +## Utilisation + +``` +ansible-playbook -i mon_inventaire configuration.yml -v +``` + +## Contributeurs + + - [Guillaume Tredez](https://noskillbrain.fr) - [Twitter: @noskillbrain](https://twitter.com/noskillbrain) diff --git a/configuration.yml b/configuration.yml new file mode 100644 index 0000000..4265586 --- /dev/null +++ b/configuration.yml @@ -0,0 +1,15 @@ +--- +# playbook de presentation https://noskillbrain.fr/2017/10/18/ansible/ + +- name: Récupération des gather facts + hosts: all + user: root + gather_facts: yes + +- hosts: all + roles: + - common + +- hosts: mysql-server + roles: + - mysql \ No newline at end of file diff --git a/group_vars/all b/group_vars/all new file mode 100644 index 0000000..8c44cdf --- /dev/null +++ b/group_vars/all @@ -0,0 +1,20 @@ +--- + +locales: + - fr_FR.UTF-8 + - en_US.UTF-8 + +default_locale: fr_FR.UTF-8 + +timezone: Europe/Paris + +motd: "Serveur {{ ansible_fqdn }} OS: {{ansible_lsb.description}}" + +common_packages: + - vim + - rsync + - unzip + +packages: + - "{{ common_packages }}" + - "{{ more_packages }}" diff --git a/group_vars/centos b/group_vars/centos new file mode 100644 index 0000000..9e01395 --- /dev/null +++ b/group_vars/centos @@ -0,0 +1,5 @@ +--- + +more_packages: + - epel-release + - MySQL-python \ No newline at end of file diff --git a/group_vars/debian b/group_vars/debian new file mode 100644 index 0000000..d4aad6d --- /dev/null +++ b/group_vars/debian @@ -0,0 +1,4 @@ +--- + +more_packages: + - locales \ No newline at end of file diff --git a/group_vars/mysql-server b/group_vars/mysql-server new file mode 100644 index 0000000..0524e77 --- /dev/null +++ b/group_vars/mysql-server @@ -0,0 +1,8 @@ +locales: + - fr_FR.UTF-8 + - en_US.UTF-8 + - en_GB.UTF-8 + +more_packages: + - mysql-server + - python-mysqldb \ No newline at end of file diff --git a/host_vars/hostcentos b/host_vars/hostcentos new file mode 100644 index 0000000..979e352 --- /dev/null +++ b/host_vars/hostcentos @@ -0,0 +1,7 @@ +--- +# fichier de variables de configuration pour le serveur hostcentos +# https://noskillbrain.fr/2017/10/18/ansible/ + +hostname: hostcentos +ip_address: 192.168.2.87 + diff --git a/host_vars/hostdebian b/host_vars/hostdebian new file mode 100644 index 0000000..30b691e --- /dev/null +++ b/host_vars/hostdebian @@ -0,0 +1,27 @@ +--- +# fichier de variables de configuration pour le serveur hostdebian +# https://noskillbrain.fr/2017/10/18/ansible/ + +hostname: hostdebian +ip_address: 192.168.2.109 + +# +# DISCLAMER: les mots de passe sont définis en clair à titre d'exemple. +# L'utilisation d'ansible Vault est largement recommendé dans ce type de cas. +# Ansible vault: http://docs.ansible.com/ansible/latest/vault.html +# +mysql_user: + noskillbrain1: + password: i0eFuprAYZQQ + databases: + - noskillbrain1_db_1 + privs: + - noskillbrain1_db_1.*:ALL + noskillbrain2: + password: V17pPyOsUO6Q + databases: + - noskillbrain2_db_1 + - noskillbrain2_db_2 + privs: + - noskillbrain2_db_1.*:ALL + - noskillbrain2_db_2.*:SELECT \ No newline at end of file diff --git a/mon_inventaire b/mon_inventaire new file mode 100644 index 0000000..dc86fd8 --- /dev/null +++ b/mon_inventaire @@ -0,0 +1,12 @@ +[linux-server] +hostcentos ansible_host=192.168.2.87 +hostdebian ansible_host=192.168.2.109 + +[debian] +hostdebian + +[centos] +hostcentos + +[mysql-server] +hostdebian \ No newline at end of file diff --git a/roles/common/handlers/main.yml b/roles/common/handlers/main.yml new file mode 100644 index 0000000..1d88569 --- /dev/null +++ b/roles/common/handlers/main.yml @@ -0,0 +1,4 @@ +--- + +- name: restart ssh + service: name=ssh state=restarted \ No newline at end of file diff --git a/roles/common/tasks/centosbase.yml b/roles/common/tasks/centosbase.yml new file mode 100644 index 0000000..e8e6ada --- /dev/null +++ b/roles/common/tasks/centosbase.yml @@ -0,0 +1,13 @@ +--- + +# Module YUM: http://docs.ansible.com/ansible/latest/yum_module.html +- name: Installation des paquets + yum: + name: "{{ item }}" + state: present + with_items: "{{ packages }}" # variable du group all + tags: packages + +# Module COMMAND: http://docs.ansible.com/ansible/latest/command_module.html +- name: Configuration de la locale par défaut + command: localectl set-locale LANG={{ default_locale }} \ No newline at end of file diff --git a/roles/common/tasks/debianbase.yml b/roles/common/tasks/debianbase.yml new file mode 100644 index 0000000..5bd4039 --- /dev/null +++ b/roles/common/tasks/debianbase.yml @@ -0,0 +1,24 @@ +--- + +# Module APT: http://docs.ansible.com/ansible/latest/apt_module.html +- name: Installation des paquets + apt: + name: "{{ item }}" + state: present + update_cache: true + with_items: "{{ packages }}" # variable du group all + tags: packages + +# Module LOCALE_GEN: http://docs.ansible.com/ansible/latest/locale_gen_module.html +- name: Génération des locales + locale_gen: + name: "{{ item }}" + state: present + with_items: "{{ locales }}" + +# Module LINEINFILE: http://docs.ansible.com/ansible/latest/lineinfile_module.html +- name: Configuration de la locale par défaut + lineinfile: + dest: /etc/default/locale + regexp: "LANG=" + line: "LANG={{ default_locale }}" \ No newline at end of file diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..0e19364 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,28 @@ +--- + +# Tâches pour Debian 9 ou supérieur +- import_tasks: debianbase.yml + when: ansible_os_family == 'Debian' and ansible_distribution_major_version | int >= 9 + +# Tâches pour CentOS 7 ou supérieur +- import_tasks: centosbase.yml + when: ansible_os_family == 'RedHat' and ansible_distribution_major_version | int >= 7 + +# Module TIMEZONE: http://docs.ansible.com/ansible/latest/timezone_module.html +- name: Configuration de la timezone + timezone: + name: "{{ timezone }}" + +- name: Déploiement du motd + template: + src: motd.j2 + dest: /etc/motd + tags: motd + notify: restart ssh + +- name: Déploiement d'une tâche cron + cron: + name: "Tache cron de test" + minute: "12" + hour: "12" + job: "echo 'Hello World'" \ No newline at end of file diff --git a/roles/common/templates/motd.j2 b/roles/common/templates/motd.j2 new file mode 100644 index 0000000..dcf866b --- /dev/null +++ b/roles/common/templates/motd.j2 @@ -0,0 +1,7 @@ + +Hostname: {{ ansible_fqdn }} +OS: {{ansible_distribution}} {{ansible_distribution_major_version}} ({{ansible_distribution_version}}) +IP: {% for ip in ansible_all_ipv4_addresses %}{{ip}} {% endfor %} + +CPU: {% for cpu in ansible_processor %} {{cpu}} {% endfor %} + diff --git a/roles/mysql/tasks/main.yml b/roles/mysql/tasks/main.yml new file mode 100644 index 0000000..1c0ed50 --- /dev/null +++ b/roles/mysql/tasks/main.yml @@ -0,0 +1,25 @@ +--- + +# Module MYSQL USER: http://docs.ansible.com/ansible/latest/mysql_user_module.html +- name: Création des utilisateur SQL + mysql_user: + name: "{{ item.key }}" + password: "{{ item.value.password }}" + priv: "{{ item.value.privs | join('/') }}" + host: "127.0.0.1" + state: present + with_dict: "{{ mysql_user }}" + tags: + - mysql + - mysql_user + +- name: Création des bases de données SQL + mysql_db: + name: "{{ item.1 }}" + state: present + with_subelements: + - "{{ mysql_user }}" + - databases + tags: + - mysql + - mysql_db