Merge branch 'structure' into 'master'

Structure

See merge request nounous/ansible!4
certbot_on_virtu
Alexandre (erdnaxe) 2019-04-18 11:33:01 +00:00
commit f05133638a
13 changed files with 116 additions and 82 deletions

View File

@ -91,18 +91,29 @@ vers les serveurs puis détruites à la fin de l'exécution.
### Gestion des groupes de machines
Dans BCFG2 on avait des groupes selon la version de Debian.
Avec Ansible on peut utiliser en condition
`ansible_distribution_release == 'stretch'` par exemple.
Donc il n'y a plus trop d'intêret de séparer selon la version de Debian les machines.
Pour la majorité des groupes ont retrouve ce qu'il y avait dans BCFG2
(`crans-vm`, `crans`…).
Pour la liste complète, je vous invite à lire le fichier `hosts`.
Sinon pour les autres groupes, vous allez retrouver une configuration similaire à BCFG2
avec par exemple les groupes `crans-vm`, `crans`
Pour en savoir plus je vous invite à lire le fichier `hosts`.
Néanmoins grâce au système de facts d'Ansible, les groupes suivants ont été
remplacés par une condition :
* pour tester les versions de Debian,
```YAML
ansible_distribution_release == 'stretch'
```
* pour tester si c'est un CPU Intel x86_64,
```YAML
ansible_processor[0].find('Intel') != -1
and ansible_architecture == 'x86_64'
```
Pour les fonctions (`proxy-server`, `dhcp-dynamique`…) il a été choisi
de ne pas faire de groupe particulier mais plutôt de sélectionner les machines
pertinentes directement dans les playbooks.
de ne pas faire de groupe particulier mais plutôt de sélectionner/enlever
les machines pertinentes directement dans les playbooks.
### Lister tout ce que sait Ansible sur un hôte
@ -112,5 +123,5 @@ Pour lister tous les faits qu'Ansible collecte nativement d'un serveur
on peut exécuter le module `setup` manuellement.
```
ansible -i hosts zamok.crans.org -m setup --ask-vault-pass
ansible zamok.adm.crans.org -m setup --ask-vault-pass
```

4
base.yml 100644
View File

@ -0,0 +1,4 @@
---
# Playbook to deploy common Crans configuration and tools
- hosts: all
roles: [] # TODO

4
dns.yml 100644
View File

@ -0,0 +1,4 @@
---
# Playbook to deploy DNS server
- hosts: odlyd.adm.crans.org
roles: [] # TODO

4
firewall.yml 100644
View File

@ -0,0 +1,4 @@
---
# Playbook to firewall
- hosts: gulp.adm.crans.org
roles: [] # TODO

66
hosts
View File

@ -2,22 +2,72 @@
# How to name your server ?
# > We name servers according to location, then type.
# > So all containers at OVH are in ovh-container.
# > Then we regroup everything in global geographic and type groups.
[crans-pve]
[crans-physical]
gulp.adm.crans.org
odlyd.adm.crans.org
soyouz.adm.crans.org
fy.adm.crans.org
zamok.adm.crans.org
vo.adm.crans.org
ft.adm.crans.org
stitch.adm.crans.org
fz.adm.crans.org
thot.adm.crans.org
cochon.adm.crans.org
charybde.adm.crans.org
vulcain.adm.crans.org
omnomnom.adm.crans.org
zbee.adm.crans.org
zephir.adm.crans.org
[crans-container]
sitesweb.adm.crans.org
[crans-vm]
re2o-bcfg2.adm.crans.org
re2o-srv.adm.crans.org
re2o-ldap.adm.crans.org
dhcp.adm.crans.org
nem.adm.crans.org
kenobi.adm.crans.org
roundcube-srv.adm.crans.org
kiwi.adm.crans.org
eap.adm.crans.org
radius.adm.crans.org
titanic.adm.crans.org
irc.adm.crans.org
alice.adm.crans.org
silice.adm.crans.org
owncloud-srv.adm.crans.org
tracker.adm.crans.org
jitsi.adm.crans.org
bakdaur.adm.crans.org
frontdaur.adm.crans.org
cups.adm.crans.org
civet.adm.crans.org
owl.adm.crans.org
gitzly.adm.crans.org
cas-srv.adm.crans.org
redisdead.adm.crans.org
ethercalc-srv.adm.crans.org
mediadrop-srv.adm.crans.org
ytrap-llatsni.adm.crans.org
unifi.adm.crans.org
horde-srv.adm.crans.org
ipv6-zayo.adm.crans.org
news.adm.crans.org
xmpp.adm.crans.org
routeur.adm.crans.org
prometheus.adm.crans.org
[ovh-server]
soyouz.adm.crans.org
# everything at crans
[crans:children]
crans-pve
crans-physical
crans-container
crans-vm
@ -25,6 +75,10 @@ crans-vm
[ovh:children]
ovh-server
# every physical server
[physical:children]
crans-physical
# every LXC container
[container:children]
crans-container
@ -33,7 +87,3 @@ crans-container
[vm:children]
crans-vm
# every PVE
[pve:children]
crans-pve

View File

@ -13,6 +13,9 @@
ldap_nslcd_bind_dn: "cn=nslcd,ou=service-users,{{ ldap_base }}"
ldap_nslcd_passwd: "{{ vault_ldap_nslcd_passwd }}"
# Group permissions
ssh_allow_groups: ssh nounou apprenti cableur root
# Scripts will tell users to go there to manage their account
intranet_url: 'https://intranet.crans.org/'
@ -20,3 +23,7 @@
ssh_pub_keys: "{{ vault_ssh_pub_keys }}"
roles:
- ldap-client
# Deploy LDAP replica
- hosts: odlyd.adm.crans.org,soyouz.adm.crans.org,fy.adm.crans.org,thot.adm.crans.org
roles: [] # TODO

4
nfs.yml 100644
View File

@ -0,0 +1,4 @@
---
# Playbook to deploy NFS
- hosts: crans,!odlyd.adm.crans.org
roles: [] # TODO

View File

@ -1,24 +0,0 @@
---
# Filter SSH on groups
- name: Filter SSH on groups
lineinfile:
dest: /etc/ssh/sshd_config
regexp: ^AllowGroups
line: AllowGroups ssh nounou apprenti cableur root
state: present
# To gain root access with ldap rights
- name: Install SUDO package
package:
name: sudo
state: present
register: package_result
retries: 3
until: package_result is succeeded
# Set sudo group
- name: Configure sudoers sudo group
template:
src: sudoers.j2
dest: /etc/sudoers
mode: 0440

View File

@ -31,5 +31,4 @@
- passwd
- group
- shadow
- sudoers
notify: Restart nslcd service

View File

@ -2,12 +2,17 @@
# Install and configure main LDAP tools
- include_tasks: install_ldap.yml
# Filter who can access server and sudo on groups
- include_tasks: group_security.yml
# Some userland scripts specific to LDAP install
- include_tasks: userland_scripts.yml
# Filter SSH on groups
- name: Filter SSH on groups
lineinfile:
dest: /etc/ssh/sshd_config
regexp: ^AllowGroups
line: "AllowGroups {{ ssh_allow_groups }}"
state: present
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=568577
- name: Ensure home directories are created upon login
lineinfile:

View File

@ -14,8 +14,8 @@ uri {{ ldap_master_uri }}
# The search base that will be used for all queries.
base {{ ldap_base }}
base passwd cn=Utilisateurs,{{ ldap_base }}
base shadow cn=Utilisateurs,{{ ldap_base }}
base passwd {{ ldap_user_tree }}
base shadow {{ ldap_user_tree }}
base group ou=posix,ou=groups,{{ ldap_base }}
# The LDAP protocol version to use.

View File

@ -1,34 +0,0 @@
# {{ ansible_managed }}
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_keep += "DARCS_EMAIL EDITOR PYTHONIOENCODING GIT_*"
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults passprompt_override
Defaults passprompt="[sudo] password for %p on %h: "
# Host alias specification
# User alias specification
User_Alias NOUNOUS= %nounou
User_Alias CABLEUR= %cableur
User_Alias ANCIEN= %ancien
User_Alias IMPRIMEURS= %imprimeurs
User_Alias BUREAU= %bureau
Runas_Alias USERS= %users
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
NOUNOUS ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d

4
wiki.yml 100644
View File

@ -0,0 +1,4 @@
---
# Playbook to deploy MoinMoin Wiki
- hosts: soyouz.adm.crans.org
roles: [] # TODO