Fiche modules copy: fetch: template: synchronize: # 04-12-2021 14:30
---

## module copy:
- name: Configure /etc/mysql/mariadb.conf.d/60-server.cnf
  copy:
    src: files/60-server.cnf
    dest: /etc/mysql/mariadb.conf.d/60-server.cnf
    owner: root
    group: root
    mode: 0644
  notify: restart_mysql

- name: save repo before upgrade
  copy:
    src: /etc/yum.repos.d/CentOS-Base.repo
    dest: /etc/yum.repos.d/CentOS-Base.repo.0
    remote_src: yes

- name: Copy root ssh key
  copy:
    src: "{{ item.src }}"
    dest: /root/.ssh
    owner: root
    group: root
    mode: "{{ item.chmod }}"
  loop:
    - { src: "files/user/root/.ssh/id_rsa", chmod: "0600" }
    - { src: "files/user/root/.ssh/id_rsa.pub", chmod: "0644" }

- name: Copy all *.txt
  copy:
    src: "{{ item }}"
    dest: /home/user
    owner: user
    group: user
    mode: 0640
  with_fileglob:
    - 'files/.user/*.txt'

- name: Empty index.html
  copy:
    content: ""
    dest: /var/www/html/index.html
    group: root
    owner: root
    mode: 0644


hosts
    htaccesstext: |
      AuthType basic
      AuthName "Protected Directory"
      AuthUserFile /var/www/.htpasswd
      Require valid-user

- name: Add htaccess
  copy:
    content: "{{ htaccesstext }}"
    dest: /var/www/html/backupfile/.htaccess
    group: root
    owner: root
    mode: 0444


## module fetch:
# fonctionne comme le module copy, mais en sens inverse.
# 'flat: yes' evite de sauvegarder la structure des dossiers (uniquement le fichier)
- name: Fetch source list from clients
  fetch:
    src: /etc/apt/sources.list
    flat: yes
    dest: "/tmp/files/{{ inventory_hostname }}.sourcelist"

ls -1 /tmp/files/
192.168.0.10.sourcelist
192.168.0.11.sourcelist
192.168.0.12.sourcelist



## module template:
hosts
pma_directory: /var/www

templates/phpmyadmin.conf
Alias /phpmyadmin {{ pma_directory }}/phpmyadmin

- name: phpmyadmin virtualhost
  template:
    src: templates/phpmyadmin.conf
    dest: /etc/apache2/sites-available/phpmyadmin.conf


hosts
domain: domain.com
nginx_root_dir: /var/www/html

templates/nginx.j2
server {
  listen 80;
  root {{ nginx_root_dir }};
  index index.html index.htm;

  server_name {{ domain }};

  location / {
    try_files $uri $uri/ =404;
  }
}

- name: virtualhost domain.com
  template:
    src: templates/nginx.j2
    dest: /etc/nginx/sites-available/domain.com.conf
    owner: root
    group: root
    mode: 0644
  notify: restart_nginx


rapport.j2
{% for host in groups['serveurweb'] %}
{{ hostvars[host].ansible_facts.hostname.upper() }}
---
{{ hostvars[host].ansible_facts.default_ipv4.address }}
{{ hostvars[host].ansible_distribution }} {{ hostvars[host].ansible_distribution_version }}
{% endfor %}

- name: Create rapport.out
  connection: local
  template:
    src: rapport.j2
    dest: rapport.out


## module synchronize:
# Synchroniser et supprimer les fichiers dans dest sur l'hôte distant qui ne
# sont pas trouvés dans src de la machine local.
# équivalent à : rsync -az --delete /var/log/apt root@host:/tmp/
- name: sync les logs vers 'dest'
  synchronize:
    src: /var/log/apt
    dest: /tmp/
    delete: yes
    recursive: yes