[INFO] Ajouter la pipeline et le playbook ansible
This commit is contained in:
parent
2516cea2b5
commit
d12e24a06f
26
.ansible/.gitignore
vendored
Normal file
26
.ansible/.gitignore
vendored
Normal file
@ -0,0 +1,26 @@
|
||||
# ---> Vim
|
||||
# Swap
|
||||
[._]*.s[a-v][a-z]
|
||||
!*.svg # comment out if you don't need vector files
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-rt-v][a-z]
|
||||
[._]ss[a-gi-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# Session
|
||||
Session.vim
|
||||
Sessionx.vim
|
||||
|
||||
# Temporary
|
||||
.netrwhist
|
||||
*~
|
||||
# Auto-generated tag files
|
||||
tags
|
||||
# Persistent undo
|
||||
[._]*.un~
|
||||
|
||||
# ---> Ansible
|
||||
*.retry
|
||||
|
||||
# roles
|
||||
roles/
|
27
.ansible/group_vars/all.yml
Normal file
27
.ansible/group_vars/all.yml
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
|
||||
app_name: www.ykn.fr
|
||||
app_url: https://{{ app_name }}/
|
||||
|
||||
gitea_api_base_url: https://gitea.ykn.fr/api/v1
|
||||
gitea_api_repository: pulsar/www.ykn.fr
|
||||
|
||||
# BEGIN role_hugo
|
||||
hugo_os: Linux
|
||||
hugo_architecture: ARM64
|
||||
hugo_latest_url: https://api.github.com/repos/gohugoio/hugo/releases/latest
|
||||
hugo_version: 0.92.2
|
||||
hugo_base_url: "{{ app_url }}"
|
||||
hugo_binary_path: .
|
||||
# END role_hugo
|
||||
|
||||
# BEGIN role_nginx
|
||||
nginx_allowed_ips:
|
||||
- 192.168.50.5
|
||||
- fd00:ff50::d005
|
||||
- 192.168.50.3
|
||||
- fd00:ff50::d003
|
||||
nginx_real_ips: "{{ nginx_allowed_ips }}"
|
||||
nginx_vhosts:
|
||||
- docroot: /var/www/www.ykn.fr
|
||||
# END role_nginx
|
11
.ansible/requirements.yml
Normal file
11
.ansible/requirements.yml
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
|
||||
- name: hugo
|
||||
scm: git
|
||||
src: https://gitea.ykn.fr/ansible/role_hugo.git
|
||||
version: master
|
||||
|
||||
- name: nginx
|
||||
scm: git
|
||||
src: https://gitea.ykn.fr/ansible/role_nginx.git
|
||||
version: master
|
153
.ansible/run.yml
Normal file
153
.ansible/run.yml
Normal file
@ -0,0 +1,153 @@
|
||||
---
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags:
|
||||
- check_targets
|
||||
- deploy
|
||||
- clean_cache
|
||||
- deploy_nginx
|
||||
tasks:
|
||||
- name: Vérifier qu'une limite est fournie
|
||||
ansible.builtin.fail:
|
||||
msg: Merci d'exécuter la commande \"ansible-playbook\" avec l'option \"--limit\"
|
||||
when: play_hosts == groups.all
|
||||
run_once: true
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: check_targets
|
||||
tasks:
|
||||
- name: Attendre que le port SSH soit ouvert
|
||||
ansible.builtin.wait_for:
|
||||
host: "{{ inventory_hostname }}"
|
||||
port: "{{ ssh_port }}"
|
||||
search_regex: OpenSSH
|
||||
delay: 3
|
||||
|
||||
- hosts: 127.0.0.1
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: install_hugo
|
||||
roles:
|
||||
- name: hugo
|
||||
|
||||
- hosts: 127.0.0.1
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: build
|
||||
tasks:
|
||||
- name: Générer les fichiers statiques
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
{{ playbook_dir }}/hugo --quiet --cleanDestinationDir
|
||||
--destination '{{ playbook_dir }}/{{ app_name }}'
|
||||
--baseURL '{{ app_url }}'
|
||||
args:
|
||||
chdir: ..
|
||||
|
||||
- hosts: 127.0.0.1
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: upload
|
||||
tasks:
|
||||
- name: Déterminer des faits
|
||||
ansible.builtin.set_fact:
|
||||
release_name: "{{ version }}-build{{ build }}"
|
||||
archive_name: "{{ app_name }}.tar.gz"
|
||||
vars:
|
||||
build: "{{ lookup('env', 'DRONE_BUILD_NUMBER') }}"
|
||||
version: "{{ lookup('pipe', 'date +%Y.%j') }}"
|
||||
|
||||
- name: Créer une archive des fichiers statiques
|
||||
community.general.archive:
|
||||
path: "{{ playbook_dir }}/{{ app_name }}"
|
||||
dest: "{{ playbook_dir }}/{{ archive_name }}"
|
||||
format: gz
|
||||
mode: u=rw,g=r,o=r
|
||||
register: make_archive
|
||||
|
||||
- name: Créer la version
|
||||
ansible.builtin.uri:
|
||||
url: "{{ gitea_api_base_url }}/repos/{{ gitea_api_repository }}/releases"
|
||||
method: POST
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
body_format: json
|
||||
body:
|
||||
name: "{{ release_name }}"
|
||||
body: Téléversé via *ansible*
|
||||
tag_name: "{{ release_name }}"
|
||||
draft: false
|
||||
prerelease: true
|
||||
status_code: 201
|
||||
register: make_release
|
||||
|
||||
- name: Téléverser l'archive
|
||||
ansible.builtin.command:
|
||||
cmd: >-
|
||||
curl -X 'POST'
|
||||
"{{ gitea_api_base_url }}/repos/{{ gitea_api_repository }}/releases/{{ release_id }}/assets"
|
||||
-H 'accept: application/json'
|
||||
-H 'Content-Type: multipart/form-data'
|
||||
-F 'attachment=@{{ make_archive.dest }};type=application/gzip'
|
||||
vars:
|
||||
release_id: "{{ make_release.json.id }}"
|
||||
|
||||
- name: Lister les pré-version
|
||||
ansible.builtin.uri:
|
||||
url: "{{ gitea_api_base_url }}/repos/{{ gitea_api_repository }}/releases?pre-release=true"
|
||||
method: GET
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
register: get_releases
|
||||
|
||||
- name: Conserver uniquement les trois dernières pré-versions
|
||||
ansible.builtin.uri:
|
||||
url: "{{ gitea_api_base_url }}/repos/{{ gitea_api_repository }}/releases/{{ item.id }}"
|
||||
method: DELETE
|
||||
headers:
|
||||
Content-Type: application/json
|
||||
status_code: 204
|
||||
when:
|
||||
- get_releases.json | length > 0
|
||||
- item | length > 0
|
||||
loop_control:
|
||||
label: "{{ item.name }}"
|
||||
loop: "{{ get_releases.json[3:] }}"
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: deploy_nginx
|
||||
roles:
|
||||
- name: nginx
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: deploy
|
||||
tasks:
|
||||
- name: Déployer l'application
|
||||
ansible.posix.synchronize:
|
||||
src: "{{ playbook_dir }}/{{ app_name }}"
|
||||
dest: /var/www
|
||||
archive: true
|
||||
delete: true
|
||||
tags: deploy
|
||||
become: true
|
||||
diff: false
|
||||
|
||||
- hosts: all
|
||||
gather_facts: false
|
||||
connection: local
|
||||
tags: clean_cache
|
||||
tasks:
|
||||
- name: Vider le cache de l'application
|
||||
ansible.builtin.file:
|
||||
path: /var/cache/nginx/{{ app_name }}
|
||||
state: absent
|
||||
become: true
|
||||
diff: false
|
76
.drone.yml
Normal file
76
.drone.yml
Normal file
@ -0,0 +1,76 @@
|
||||
kind: pipeline
|
||||
type: exec
|
||||
name: default
|
||||
|
||||
trigger:
|
||||
event:
|
||||
- cron
|
||||
- custom
|
||||
- promote
|
||||
- push
|
||||
|
||||
platform:
|
||||
os: linux
|
||||
arch: arm64
|
||||
|
||||
concurrency:
|
||||
limit: 1
|
||||
|
||||
steps:
|
||||
- name: ansible-inventory
|
||||
commands:
|
||||
- git clone -b alpha https://gitea.ykn.fr/ansible/inventory.git .ansible/configuration
|
||||
|
||||
- name: ansible-vault
|
||||
environment:
|
||||
ANSIBLE_VAULT_PASSWORD:
|
||||
from_secret: ANSIBLE_VAULT_PASSWORD
|
||||
commands:
|
||||
- echo $ANSIBLE_VAULT_PASSWORD > .ansible/configuration/vault-password
|
||||
|
||||
- name: ansible-galaxy
|
||||
commands:
|
||||
- sed -i 's#ssh://gitea@git.ykn.fr:12393#https://gitea.ykn.fr#g' .ansible/requirements.yml
|
||||
- ansible-galaxy install -r .ansible/requirements.yml -p .ansible/roles
|
||||
|
||||
- name: ansible-playbook/check
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags check_targets --limit 'ykn-www-2245.nyx.ykn.local,nyx_rproxies'
|
||||
|
||||
- name: ansible-playbook/hugo
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags install_hugo
|
||||
|
||||
- name: ansible-playbook/build
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags build
|
||||
|
||||
- name: ansible-playbook/upload
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags upload
|
||||
|
||||
- name: ansible-playbook/nginx
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags deploy_nginx --limit 'ykn-www-2245.nyx.ykn.local'
|
||||
|
||||
- name: ansible-playbook/deploy
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags deploy --limit 'ykn-www-2245.nyx.ykn.local'
|
||||
|
||||
- name: ansible-playbook/cache
|
||||
environment:
|
||||
ANSIBLE_CONFIG: .ansible/configuration/ansible.cfg
|
||||
commands:
|
||||
- ansible-playbook .ansible/run.yml --tags clean_cache --limit 'nyx_rproxies'
|
@ -1,15 +0,0 @@
|
||||
galaxy_info:
|
||||
namespace: ykn
|
||||
author: pulsar89.5
|
||||
description: Rôle modèle
|
||||
|
||||
license: GPL-3.0-or-later
|
||||
|
||||
min_ansible_version: '2.1'
|
||||
|
||||
platforms:
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
|
||||
dependencies: []
|
Reference in New Issue
Block a user