Compare commits

...

21 Commits

Author SHA1 Message Date
535675494a typo mkzone 2023-02-03 13:12:57 +01:00
ade43e2369 modif nxc ok avec TLS 2023-01-29 23:35:26 +01:00
fc24e96ac6 ajout Vgarantfile DNS pour bind9 2023-01-29 00:27:58 +01:00
16c177fa5b opt -s : pour serveur slave 2023-01-28 21:26:34 +01:00
ad18fb502e typo .. 2023-01-28 19:36:29 +01:00
46e2166943 typo 2023-01-28 19:35:19 +01:00
874bbac6e7 divers params 2023-01-28 19:21:07 +01:00
00da92bdf9 modif mkzone 2023-01-28 18:22:53 +01:00
9dbde4a623 carcact. parasites 2023-01-21 16:26:08 +01:00
076a48b0a2 ajout mkzone pour bind 2023-01-21 16:13:26 +01:00
d97a266456 ajout Vagarntfile lb wordpress 2023-01-19 23:05:23 +01:00
ecf4af3734 typo 2023-01-18 13:22:43 +01:00
e3d60ad398 guacamole operationnel 2023-01-17 21:50:03 +01:00
cb2aac8aa3 ajout guacamole : projet 2023-01-17 13:56:39 +01:00
d8dc8a0227 ajout semaphore 2023-01-09 23:46:32 +01:00
ef96a368f3 ajout journald-remote 2023-01-07 00:20:05 +01:00
8a5a320a71 ajout gitweb : pb master -> main 2023-01-05 00:59:11 +01:00
888ecec657 ajout test 2023-01-04 19:27:31 +01:00
742e4561db nettoyage : ok 2022-12-29 17:36:49 +01:00
99ad1129b9 reorg avec common 2022-12-29 15:23:42 +01:00
6c16426120 nettoyage 2022-12-28 00:10:57 +01:00
29 changed files with 1446 additions and 1114 deletions

View File

@ -1,8 +1,9 @@
# vagrant
le 2022-12-04
le 2023-01-29
Ce dépôt héberge des **Vagrantfile** dont
* **dns** : Vagrantfile pour 2 serveurs **Bind9** (1 maitre et un esclave), tests **goss** chainés
* **docker**
* **docker-wordpress**
* **docker-glpi**
@ -12,6 +13,8 @@ Ce dépôt héberge des **Vagrantfile** dont
* **docker-traefik-nginx**
* **docker-elk**
* **devstack**
* **k8s** : kubernetes 1.26.00 + playbook pout master **k8s-master** et 2 noeuds **node-1** et **node-2**
* **guacamole** : Vagrantfile pour Apache Guacamole dockerise sans frontal
* **k8s** : kubernetes 1.26.00 + playbook pour master **k8s-master** et 2 noeuds **node-1** et **node-2**
* **minione**
* **rundeck** : Vagrantfile + playbook pour installation avec Mariadb
* **wp-lb** : Wordpress web1 et web2, lb HaProxy, nfs, db Mariadb - Vagrantfile + playbooks

243
divers/bind/mkzone Executable file
View File

@ -0,0 +1,243 @@
#!/usr/bin/env bash
set -Eeuo pipefail
trap cleanup SIGINT SIGTERM ERR EXIT
# cree les fichiers de configuration bind9
# - ficher de zone directe
# - ficher de zone inverse
#
version="1.1a"
zone="domaine.lan"
slave=0
cleanup() {
trap - SIGINT SIGTERM ERR EXIT
# script cleanup here
}
initialize () {
readonly zonenet="192.168.56"
readonly zonerev="56.168.192.in-addr.arpa"
# NS1
readonly nsname="srv1"
readonly nsip="${zonenet}.10"
readonly nsiprev=$(echo ${nsip}|cut -d. -f4) # dernier octet pour classe C
# NS2
readonly nsname2="srv2"
readonly nsip2="${zonenet}.11"
readonly nsiprev2=$(echo ${nsip2}|cut -d. -f4)
readonly ttl="86400"
# Global
readonly nsfqdn="${nsname}.${zone}"
readonly nsfqdnp="${nsfqdn}."
readonly zonep="${zone}."
readonly date=$(date +%Y%m%d00)
}
mkconflocal () {
if [[ "${slave}" != 1 ]] ; then
echo "Generation fichier named.conf.local ..."
cat <<EOT > "named.conf.local"
# fichier zone ${zone}
# le $(date)
zone "${zone}" {
type master;
file "/etc/bind/db.${zone}"; # zone directe
};
zone "${zonerev}" {
type master;
};
EOT
else
echo "Generation fichier named.conf.local ..."
cat <<EOT > "named.conf.local"
# fichier zone ${zone}
# le $(date)
zone "${zone}" {
type slave;
file "/var/cache/bind/db.${zone}"; # zone directe
masters { ${nsip} ; };
};
zone "${zonerev}" {
type slave;
file "/var/cache/bind/db.${zone}.rev"; # zone directe
masters { ${nsip} ; };
};
EOT
fi
}
mkzdirect () {
# fichier de zone directe
echo "Generation fichier de zone directe db.${zone} ..."
cat <<EOT > "db.${zone}"
; fichier zone ${zone}
; le $(date)
\$TTL ${ttl} ; (1 day)
\$ORIGIN ${zonep}
@ IN SOA ${nsfqdnp} root.${nsfqdnp} (
${date} ; serial YYYYMMDDnn
14400 ; refresh (4 hours)
1800 ; retry (30 minutes)
1209600 ; expire (2 weeks)
3600 ; minimum (1 hour)
)
@ IN NS ${nsname}
@ IN NS ${nsname2}
IN A 203.0.113.10 ; zone
IN AAAA 2001:DB8:BEEF:113::10 ;
www IN CNAME ${nsfqdnp}
ftp IN CNAME ${nsfqdnp}
${nsname} IN A ${nsip}
IN AAAA 2001:DB8:BEEF:2::22
${nsname2} IN A ${nsip2}
IN AAAA 2001:DB8:BEEF:100::22
EOT
}
mkzreverse () {
echo "Generation fichier de zone inverse db.${zone}.rev ..."
cat <<EOT > "db.${zone}.rev"
; fichier zone inverse ${zone}
; le $(date)
\$TTL ${ttl} ; (1 day)
@ IN SOA ${nsfqdnp} root.${nsfqdnp} (
${date} ; serial YYYYMMDDnn
14400 ; refresh (4 hours)
1800 ; retry (30 minutes)
1209600 ; expire (2 weeks)
3600 ; minimum (1 hour)
)
@ IN NS ${nsname}.${zone}.
@ IN NS ${nsname2}.${zone}.
${nsiprev} IN PTR ${nsname}.${zone}.
${nsiprev2} IN PTR ${nsname2}.${zone}.
EOT
}
mkresolv () {
echo "Generation fichier /etc/resolv.conf ..."
cat <<EOT > "/etc/resolv.conf"
# fichier resolv.conf ${zone}
# le $(date)
domain ${zone}
search ${zone}
nameserver 127.0.0.1
EOT
}
script_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd -P)
usage() {
cat <<EOF # remove the space between << and EOF, this is due to web plugin issue
Usage: $(basename "${BASH_SOURCE[0]}") [-h] [-v] [-f] -p param_value zone [arg2...]
Script description here.
Available options:
-h, --help Print this help and exit
-v, --verbose Print script debug info
-s, --slave Some flag description
-p, --param Some param description
EOF
exit
}
cleanup() {
trap - SIGINT SIGTERM ERR EXIT
# script cleanup here
}
setup_colors() {
if [[ -t 2 ]] && [[ -z "${NO_COLOR-}" ]] && [[ "${TERM-}" != "dumb" ]]; then
NOFORMAT='\033[0m' RED='\033[0;31m' GREEN='\033[0;32m' ORANGE='\033[0;33m' BLUE='\033[0;34m' PURPLE='\033[0;35m' CYAN='\033[0;36m' YELLOW='\033[1;33m'
else
NOFORMAT='' RED='' GREEN='' ORANGE='' BLUE='' PURPLE='' CYAN='' YELLOW=''
fi
}
msg() {
echo >&2 -e "${1-}"
}
die() {
local msg=$1
local code=${2-1} # default exit status 1
msg "$msg"
exit "$code"
}
parse_params() {
# default values of variables set from params
flag=0
param=''
while :; do
case "${1-}" in
-h | --help) usage ;;
--no-color) NO_COLOR=1 ;;
-s | --slave) flag=1 ;; # example flag
# -p | --param) # example named parameter
# param="${2-}"
# shift
# ;;
-?*) die "Unknown option: $1" ;;
*) break ;;
esac
shift
done
args=("$@")
# check required params and arguments
# [[ -z "${param-}" ]] && die "Missing required parameter: param"
[[ ${#args[@]} -eq 0 ]] && die "Missing script arguments"
return 0
}
parse_params "$@"
setup_colors
# script logic here
#msg "${RED}Read parameters:${NOFORMAT}"
#msg "- flag: ${flag}"
#msg "- param: ${param}"
#msg "- arguments: ${args[*]-}"
zone="${args[0]-}"
slave="${flag}"
initialize
if [[ ${flag} != 1 ]] ; then
mkconflocal
mkzdirect
mkzreverse
mkresolv
else
mkconflocal
mkresolv
fi
exit 0

53
dns/Vagrantfile vendored Normal file
View File

@ -0,0 +1,53 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Base VM OS configuration.
config.vm.box = "debian/bullseye64"
config.ssh.insert_key = false
config.vm.synced_folder '.', '/vagrant', disabled: true
# General VirtualBox VM configuration.
config.vm.provider :virtualbox do |v|
v.memory = 512
v.cpus = 1
v.linked_clone = true
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--ioapic", "on"]
end
# srv1 master.
config.vm.define "srv1" do |srv1|
srv1.vm.hostname = "srv1"
srv1.vm.network :private_network, ip: "192.168.56.10"
srv1.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
srv1.vm.provision "shell", path: "provision/setup-master.sh"
end
# srv2 slave.
config.vm.define "srv2" do |srv2|
srv2.vm.hostname = "srv2"
srv2.vm.network :private_network, ip: "192.168.56.11"
srv2.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
srv2.vm.provision "shell", path: "provision/setup-slave.sh"
end
# cli.
config.vm.define "cli" do |cli|
cli.vm.hostname = "cli"
cli.vm.network :private_network, ip: "192.168.56.30"
cli.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", 512]
end
cli.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
cli.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/setup-cli.sh"
end
end
end

View File

@ -0,0 +1,28 @@
#!/bin/bash
set -eu
mondomaine=domaine.lan
apt-get install -y bind9 bind9-doc bind9-host
wget -nc https://gitea.lyc-lecastel.fr/gadmin/vagrant/raw/branch/main/divers/bind/mkzone
bash mkzone "${mondomaine}"
cp db.${mondomaine}* /etc/bind
cp named.conf.local /etc/bind
sudo named-checkconf /etc/bind/named.conf
sudo named-checkzone "${mondomaine}" "/etc/bind/db.${mondomaine}"
sudo systemctl restart bind9
host srv1
host srv2
host -t soa "${mondomaine}"
host -l "${mondomaine}"
curl -fsSL https://goss.rocks/install |sh
goss add command "host ${mondomaine}"
goss add command "host -t soa ${mondomaine}"
goss add command "host -t ns ${mondomaine}"
goss add command "host srv1.${mondomaine}"
goss add command "host srv1"
goss add command "host www"
goss add command "host srv2.${mondomaine}"
goss add command "host srv2"
goss add command "host 192.168.56.10"
goss add command "host 192.168.56.11"
goss v -f tap

View File

@ -0,0 +1,15 @@
#!/bin/bash
set -eu
mondomaine=domaine.lan
apt-get install -y bind9 bind9-doc bind9-host
wget -nc https://gitea.lyc-lecastel.fr/gadmin/vagrant/raw/branch/main/divers/bind/mkzone
bash mkzone -s "${mondomaine}"
cp named.conf.local /etc/bind
sudo named-checkconf /etc/bind/named.conf
sudo named-checkzone "${mondomaine}" "/etc/bind/db.${mondomaine}"
sudo systemctl restart bind9
host srv1
host srv2
host -t soa "${mondomaine}"
host -l "${mondomaine}"

View File

@ -64,95 +64,8 @@ Vagrant.configure("2") do |config|
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt install -y wget curl git vim
if ! which docker ; then
curl -s -o getdocker.sh https://get.docker.com
bash getdocker.sh
gpasswd -a vagrant docker
fi
mkdir -p nextcloud && cd nextcloud
cat > traefik.yml <<-'EOT'
version: '3'
networks:
proxy:
external: true
services:
reverse-proxy:
# The official v2 Traefik docker image
image: traefik:v2.9
container_name: traefik
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
'EOT'
cat > nextcloud.yml <<-'EOT'
version: '2'
volumes:
nextcloud:
db:
networks:
proxy:
external: true
nxc:
external: false
services:
db:
image: mariadb:10.5
container_name: db
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
networks:
- nxc
environment:
- MYSQL_ROOT_PASSWORD=Azerty1+
- MYSQL_PASSWORD=Azerty1+
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
container_name: app
restart: always
# ports:
# - 8081:80
links:
- db
volumes:
- nextcloud:/var/www/html
networks:
- proxy
- nxc
labels:
- "traefik.http.routers.app.rule=Host(`mon.nxc`)"
environment:
- MYSQL_PASSWORD=Azerty1+
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
'EOT'
docker network create proxy
docker compose -f traefik.yml up -d
docker compose -f nextcloud.yml up -d
ip -br a
SHELL
config.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
config.vm.provision "shell", path: "provision/setup.sh"
end

View File

@ -0,0 +1,82 @@
version: '3'
volumes:
nextcloud:
db:
networks:
proxy:
external: true
nxc:
external: false
services:
reverse-proxy:
# The official v2 Traefik docker image
image: traefik:latest
container_name: traefik
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
- "443:443"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock:ro
# Map the static configuration into the container
- ./config/static.yml:/etc/traefik/traefik.yml:ro
# Map the dynamic configuration into the container
- ./config/dynamic.yml:/etc/traefik/dynamic.yml:ro
# Map the certificats into the container
- ./certs:/etc/certs:ro
networks:
- proxy
db:
image: mariadb:10.5
container_name: db
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
networks:
- nxc
environment:
- MYSQL_ROOT_PASSWORD=Azerty1+
- MYSQL_PASSWORD=Azerty1+
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
container_name: app
restart: always
ports:
- 8081:80
#links:
depends_on:
- db
volumes:
- nextcloud:/var/www/html
networks:
- proxy
- nxc
labels:
# - "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`mon.nxc`)"
- "traefik.http.routers.app.tls=true"
- "traefik.enable=true"
- "traefik.docker.network=proxy"
# - "traefik.http.routers.app.entrypoints=websecure"
# - "traefik.http.routers.app.rule=Host(`mon.nxc`)"
- "traefik.http.routers.app.service=app-service"
- "traefik.http.services.app-service.loadbalancer.server.port=80"
environment:
- MYSQL_PASSWORD=Azerty1+
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db

View File

@ -0,0 +1,161 @@
#!/bin/bash
apt-get update
apt-get install -y wget curl git vim
if ! which docker ; then
curl -s -o getdocker.sh https://get.docker.com
bash getdocker.sh
gpasswd -a vagrant docker
fi
mkdir -p nextcloud && cd nextcloud
wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64
chmod +x mkcert
mv mkcert /usr/local/bin
sudo apt-get install -y libnss3-tools
mkdir certs config
mkcert -install
mkcert -cert-file certs/local-cert.pem -key-file certs/local-key.pem "mon.nxc" "*.mon.nxc"
cat > traefik.yml <<EOT
version: '3'
networks:
proxy:
external: true
services:
reverse-proxy:
# The official v2 Traefik docker image
image: traefik:latest
container_name: traefik
# Enables the web UI and tells Traefik to listen to docker
command: --api.insecure=true --providers.docker
ports:
# The HTTP port
- "80:80"
- "443:443"
# The Web UI (enabled by --api.insecure=true)
- "8080:8080"
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock:ro
# Map the static configuration into the container
- ./config/static.yml:/etc/traefik/traefik.yml:ro
# Map the dynamic configuration into the container
- ./config/dynamic.yml:/etc/traefik/dynamic.yml:ro
# Map the certificats into the container
- ./certs:/etc/certs:ro
networks:
- proxy
EOT
cat > ./config/static.yml <<EOT
global:
sendAnonymousUsage: false
api:
dashboard: true
insecure: true
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
watch: true
exposedByDefault: false
file:
filename: /etc/traefik/dynamic.yml
watch: true
log:
level: INFO
format: common
entryPoints:
http:
address: ":80"
http:
redirections:
entryPoint:
to: https
scheme: https
https:
address: ":443"
EOT
cat > ./config/dynamic.yml <<EOT
http:
routers:
traefik:
rule: "Host(`traefik.docker.localhost`)"
service: "api@internal"
tls:
domains:
- main: "docker.localhost"
sans:
- "*.docker.localhost"
- main: "mon.nxc"
sans:
- "*.mon.nxc"
tls:
certificates:
- certFile: "/etc/certs/local-cert.pem"
keyFile: "/etc/certs/local-key.pem"
EOT
cat > nextcloud.yml <<'EOT'
version: '2'
volumes:
nextcloud:
db:
networks:
proxy:
external: true
nxc:
external: false
services:
db:
image: mariadb:10.5
container_name: db
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
networks:
- nxc
environment:
- MYSQL_ROOT_PASSWORD=Azerty1+
- MYSQL_PASSWORD=Azerty1+
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud
container_name: app
restart: always
# ports:
# - 8081:80
#links:
depends_on:
- db
volumes:
- nextcloud:/var/www/html
networks:
- proxy
- nxc
labels:
- "traefik.enable=true"
- "traefik.http.routers.app.rule=Host(`mon.nxc`)"
- "traefik.http.routers.app.tls=true"
environment:
- MYSQL_PASSWORD=Azerty1+
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
'EOT'
docker network create proxy
docker compose -f traefik.yml up -d
docker compose -f nextcloud.yml up -d
ip -br a

88
gitweb/Vagrantfile vendored Normal file
View File

@ -0,0 +1,88 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "debian/bullseye64"
config.vm.hostname = "gitweb"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y curl wget vim apache2 php
chown -R www-data:www-data /var/www/html/
chmod g+w /var/www/html/
apt-get install -y git
useradd -m -s /bin/bash -d /home/git -c git git
gpasswd -a git www-data
echo "git:git"|sudo chpasswd
su - -c "git init --bare --shared web" git
su - -c "echo 'ref: refs/heads/main' > web/HEAD" git
cat > /home/git/web/hooks/post-update <<-'EOF'
#!/bin/bash
GWT=/var/www/html/web
[[ -e ${GWT} ]] || mkdir -p ${GWT}
GIT_WORK_TREE=${GWT} git checkout -f
EOF
chmod +x /home/git/web/hooks/post-update
chown git:git /home/git/web/hooks/post-update
SHELL
end

10
guacamole/README.md Normal file
View File

@ -0,0 +1,10 @@
# Guacamole
**Apache Guacamole** est un outil permettant les connexions à distance (RDP, SSH, VNC, ...) via une interface web.
Il est mis en oeuvre (Version 1.4.0) ici avec une **Vagrantfile**, docker et mariadb en accès direct hTTP sans proxy.
**Acces** : http://<adresse-IP>:8080/guacamole avec **guacadmin/guacadmin**
le 2023-01-17

71
guacamole/Vagrantfile vendored Normal file
View File

@ -0,0 +1,71 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "debian/bullseye64"
config.vm.hostname = "guacamole"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
# config.vm.provision "shell", inline: <<-SHELL
# apt-get update
# apt-get install -y apache2
# SHELL
config.vm.provision "shell" do |s|
s.path = "provision/setup.sh"
end
end

View File

@ -0,0 +1,76 @@
#!/bin/bash
rep="guacamole"
apt-get update
apt-get install -y curl wget vim
if ! which docker ; then
curl -s -o getdocker.sh https://get.docker.com
bash getdocker.sh
gpasswd -a vagrant docker
fi
[[ -e "$rep" ]] || mkdir "$rep"
cd "$rep" || exit 1
cat > docker-compose.yml <<EOT
version: '3'
services:
guacdb:
container_name: guacdb
image: mariadb/server:latest
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'MariaDBRootPSW'
MYSQL_DATABASE: 'guacamole_db'
MYSQL_USER: 'guacamole_user'
MYSQL_PASSWORD: 'MariaDBUserPSW'
volumes:
- 'guacdb-data:/var/lib/mysql'
- ./initdb:/docker-entrypoint-initdb.d
guacd:
container_name: guacd
image: guacamole/guacd
restart: unless-stopped
guacamole:
container_name: guacamole
image: 'guacamole/guacamole:latest'
restart: unless-stopped
ports:
- '8080:8080'
environment:
GUACD_HOSTNAME: "guacd"
MYSQL_HOSTNAME: "guacdb"
MYSQL_DATABASE: "guacamole_db"
MYSQL_USER: "guacamole_user"
MYSQL_PASSWORD: "MariaDBUserPSW"
depends_on:
- guacdb
- guacd
volumes:
guacdb-data:
EOT
docker compose pull
# creation fichiers initialisation mariadb
[[ -e "initdb" ]] || mkdir "initdb"
cat > initdb/01-initdb.sql <<EOT
CREATE DATABASE IF NOT EXISTS guacamole_db;
EOT
echo "USE guacamole_db ;" > initdb/02-initdb.sql
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --mysql >> initdb/02-initdb.sql
cat > initdb/03-initdb.sql <<EOT
CREATE USER IF NOT EXISTS 'guacamole_user'@'%' IDENTIFIED BY 'StrongPassw0rd';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole_db.* TO 'guacamole_user'@'%';
FLUSH PRIVILEGES;
EOT
docker compose up -d

39
journald-remote/Vagrantfile vendored Normal file
View File

@ -0,0 +1,39 @@
IMAGE_NAME = "debian/bullseye64"
N =2
node_ip = "192.168.56.10"
Vagrant.configure("2") do |config|
config.ssh.insert_key = false
config.vm.provider "virtualbox" do |v|
v.memory = 512
v.cpus = 1
end
config.vm.define "journald-rcv" do |master|
master.vm.box = IMAGE_NAME
master.vm.network "private_network", ip: "192.168.56.10"
master.vm.hostname = "journald-rcv"
master.vm.provision "shell" do |shell|
shell.path = "journald-rcv.sh"
end
# master.vm.provision "ansible" do |ansible|
# ansible.playbook = "kubernetes-setup/master-playbook.yml"
# ansible.extra_vars = {
# node_ip: "192.168.56.10",
# }
# end
end
(1..N).each do |i|
config.vm.define "journald-snd-#{i}" do |node|
node.vm.box = IMAGE_NAME
node.vm.network "private_network", ip: "192.168.56.#{i + 10}"
node.vm.hostname = "journald-snd-#{i}"
node.vm.provision "shell" do |shell|
shell.path = "journald-snd.sh"
shell.args = node_ip
end
end
end
end

View File

@ -0,0 +1,18 @@
#!/bin/bash
sudo apt-get update
sudo apt-get install -y systemd-journal-remote
sudo systemctl enable systemd-journal-remote.socket
sudo cp /lib/systemd/system/systemd-journal-remote.service /etc/systemd/system
sudo sed -i 's/--listen-https=-3/--listen-http=-3/' /etc/systemd/system/systemd-journal-remote.service
[[ -d /var/log/journal/remote ]] || sudo mkdir /var/log/journal/remote
sudo chown systemd-journal-remote /var/log/journal/remote
sudo systemctl daemon-reload
sudo ss -lntp4

View File

@ -0,0 +1,9 @@
#!/bin/bash
sudo apt-get update
sudo apt-get install -y systemd-journal-remote
rpl="s/^# URL=/URL=http:\/\/${1}:19532/"
sudo sed -i "$rpl" /etc/systemd/journal-upload.conf
sudo systemctl enable systemd-journal-upload.service
sudo systemctl restart systemd-journal-upload.service

View File

@ -0,0 +1,139 @@
- name: Set timezone to Europe/Paris
community.general.timezone:
name: Europe/Paris
- name: maj fichier hosts
ansible.builtin.blockinfile:
path: /etc/hosts
block: |
192.168.56.10 k8s-master
192.168.56.11 node-1
192.168.56.12 node-2
- name: Forwarding IPv4 and letting iptables see bridged traffic
ansible.builtin.blockinfile:
path: /etc/modules-load.d/k8s.conf
create: yes
block: |
overlay
br_netfilter
- name: charge module overlay
community.general.modprobe:
state: present
name: overlay
- name: charge module overlay et br_netfilter
community.general.modprobe:
state: present
name: br_netfilter
- name: persistance des bridges
ansible.builtin.blockinfile:
path: /etc/sysctl.d/k8s.conf
create: yes
block: |
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
- name: applique les parametres sysctl
command: "sysctl --system"
- name: Recupere get-docker
get_url:
url: "https://get.docker.com"
dest: /tmp/get-docker.sh
- name: lance get-docker - installe docker, containerd ...
command: 'sh /tmp/get-docker.sh'
- name: Add vagrant user to docker group
user:
name: vagrant
group: docker
- name: cree repertoire /etc/containerd
file:
path: /etc/containerd
state: directory
- name: genere config.toml (containerd)
#command: "sudo containerd config default | sudo tee /etc/containerd/config.toml"
shell: "containerd config default | tee /etc/containerd/config.toml"
- name: configure cgroup driver pour systemd (config.toml)
replace:
path: "/etc/containerd/config.toml"
regexp: 'SystemdCgroup = false'
replace: 'SystemdCgroup = true'
backup: yes
- name: redemarre containerd
service:
name: containerd
state: restarted
enabled: yes
- name: Remove swapfile from /etc/fstab
mount:
name: "{{ item }}"
fstype: swap
state: absent
with_items:
- swap
- none
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
- name: Add an apt signing key for Kubernetes
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
state: present
- name: Adding apt repository for Kubernetes
apt_repository:
repo: deb https://apt.kubernetes.io/ kubernetes-xenial main
state: present
filename: kubernetes.list
- name: Install Kubernetes binaries
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
- kubelet
- kubeadm
- kubectl
- name: Cree file kubelet
ansible.builtin.file:
path: /etc/default/kubelet
state: touch
- name: Configure node ip
lineinfile:
path: /etc/default/kubelet
line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }}
create: yes
- name: Restart kubelet
service:
name: kubelet
daemon_reload: yes
state: restarted
# - name: nettoie config.toml
# file:
# path: /etc/containerd/config.toml
# state: absent
- name: redemarre containerd
service:
name: containerd
state: restarted

View File

@ -1,656 +0,0 @@
#!/bin/sh
set -e
# Docker CE for Linux installation script
#
# See https://docs.docker.com/engine/install/ for the installation steps.
#
# This script is meant for quick & easy install via:
# $ curl -fsSL https://get.docker.com -o get-docker.sh
# $ sh get-docker.sh
#
# For test builds (ie. release candidates):
# $ curl -fsSL https://test.docker.com -o test-docker.sh
# $ sh test-docker.sh
#
# NOTE: Make sure to verify the contents of the script
# you downloaded matches the contents of install.sh
# located at https://github.com/docker/docker-install
# before executing.
#
# Git commit from https://github.com/docker/docker-install when
# the script was uploaded (Should only be modified by upload job):
SCRIPT_COMMIT_SHA="4f282167c425347a931ccfd95cc91fab041d414f"
# strip "v" prefix if present
VERSION="${VERSION#v}"
# The channel to install from:
# * nightly
# * test
# * stable
# * edge (deprecated)
DEFAULT_CHANNEL_VALUE="stable"
if [ -z "$CHANNEL" ]; then
CHANNEL=$DEFAULT_CHANNEL_VALUE
fi
DEFAULT_DOWNLOAD_URL="https://download.docker.com"
if [ -z "$DOWNLOAD_URL" ]; then
DOWNLOAD_URL=$DEFAULT_DOWNLOAD_URL
fi
DEFAULT_REPO_FILE="docker-ce.repo"
if [ -z "$REPO_FILE" ]; then
REPO_FILE="$DEFAULT_REPO_FILE"
fi
mirror=''
DRY_RUN=${DRY_RUN:-}
while [ $# -gt 0 ]; do
case "$1" in
--mirror)
mirror="$2"
shift
;;
--dry-run)
DRY_RUN=1
;;
--*)
echo "Illegal option $1"
;;
esac
shift $(( $# > 0 ? 1 : 0 ))
done
case "$mirror" in
Aliyun)
DOWNLOAD_URL="https://mirrors.aliyun.com/docker-ce"
;;
AzureChinaCloud)
DOWNLOAD_URL="https://mirror.azure.cn/docker-ce"
;;
esac
command_exists() {
command -v "$@" > /dev/null 2>&1
}
# version_gte checks if the version specified in $VERSION is at least
# the given CalVer (YY.MM) version. returns 0 (success) if $VERSION is either
# unset (=latest) or newer or equal than the specified version. Returns 1 (fail)
# otherwise.
#
# examples:
#
# VERSION=20.10
# version_gte 20.10 // 0 (success)
# version_gte 19.03 // 0 (success)
# version_gte 21.10 // 1 (fail)
version_gte() {
if [ -z "$VERSION" ]; then
return 0
fi
eval calver_compare "$VERSION" "$1"
}
# calver_compare compares two CalVer (YY.MM) version strings. returns 0 (success)
# if version A is newer or equal than version B, or 1 (fail) otherwise. Patch
# releases and pre-release (-alpha/-beta) are not taken into account
#
# examples:
#
# calver_compare 20.10 19.03 // 0 (success)
# calver_compare 20.10 20.10 // 0 (success)
# calver_compare 19.03 20.10 // 1 (fail)
calver_compare() (
set +x
yy_a="$(echo "$1" | cut -d'.' -f1)"
yy_b="$(echo "$2" | cut -d'.' -f1)"
if [ "$yy_a" -lt "$yy_b" ]; then
return 1
fi
if [ "$yy_a" -gt "$yy_b" ]; then
return 0
fi
mm_a="$(echo "$1" | cut -d'.' -f2)"
mm_b="$(echo "$2" | cut -d'.' -f2)"
if [ "${mm_a#0}" -lt "${mm_b#0}" ]; then
return 1
fi
return 0
)
is_dry_run() {
if [ -z "$DRY_RUN" ]; then
return 1
else
return 0
fi
}
is_wsl() {
case "$(uname -r)" in
*microsoft* ) true ;; # WSL 2
*Microsoft* ) true ;; # WSL 1
* ) false;;
esac
}
is_darwin() {
case "$(uname -s)" in
*darwin* ) true ;;
*Darwin* ) true ;;
* ) false;;
esac
}
deprecation_notice() {
distro=$1
distro_version=$2
echo
printf "\033[91;1mDEPRECATION WARNING\033[0m\n"
printf " This Linux distribution (\033[1m%s %s\033[0m) reached end-of-life and is no longer supported by this script.\n" "$distro" "$distro_version"
echo " No updates or security fixes will be released for this distribution, and users are recommended"
echo " to upgrade to a currently maintained version of $distro."
echo
printf "Press \033[1mCtrl+C\033[0m now to abort this script, or wait for the installation to continue."
echo
sleep 10
}
get_distribution() {
lsb_dist=""
# Every system that we officially support has /etc/os-release
if [ -r /etc/os-release ]; then
lsb_dist="$(. /etc/os-release && echo "$ID")"
fi
# Returning an empty string here should be alright since the
# case statements don't act unless you provide an actual value
echo "$lsb_dist"
}
echo_docker_as_nonroot() {
if is_dry_run; then
return
fi
if command_exists docker && [ -e /var/run/docker.sock ]; then
(
set -x
$sh_c 'docker version'
) || true
fi
# intentionally mixed spaces and tabs here -- tabs are stripped by "<<-EOF", spaces are kept in the output
echo
echo "================================================================================"
echo
if version_gte "20.10"; then
echo "To run Docker as a non-privileged user, consider setting up the"
echo "Docker daemon in rootless mode for your user:"
echo
echo " dockerd-rootless-setuptool.sh install"
echo
echo "Visit https://docs.docker.com/go/rootless/ to learn about rootless mode."
echo
fi
echo
echo "To run the Docker daemon as a fully privileged service, but granting non-root"
echo "users access, refer to https://docs.docker.com/go/daemon-access/"
echo
echo "WARNING: Access to the remote API on a privileged Docker daemon is equivalent"
echo " to root access on the host. Refer to the 'Docker daemon attack surface'"
echo " documentation for details: https://docs.docker.com/go/attack-surface/"
echo
echo "================================================================================"
echo
}
# Check if this is a forked Linux distro
check_forked() {
# Check for lsb_release command existence, it usually exists in forked distros
if command_exists lsb_release; then
# Check if the `-u` option is supported
set +e
lsb_release -a -u > /dev/null 2>&1
lsb_release_exit_code=$?
set -e
# Check if the command has exited successfully, it means we're in a forked distro
if [ "$lsb_release_exit_code" = "0" ]; then
# Print info about current distro
cat <<-EOF
You're using '$lsb_dist' version '$dist_version'.
EOF
# Get the upstream release info
lsb_dist=$(lsb_release -a -u 2>&1 | tr '[:upper:]' '[:lower:]' | grep -E 'id' | cut -d ':' -f 2 | tr -d '[:space:]')
dist_version=$(lsb_release -a -u 2>&1 | tr '[:upper:]' '[:lower:]' | grep -E 'codename' | cut -d ':' -f 2 | tr -d '[:space:]')
# Print info about upstream distro
cat <<-EOF
Upstream release is '$lsb_dist' version '$dist_version'.
EOF
else
if [ -r /etc/debian_version ] && [ "$lsb_dist" != "ubuntu" ] && [ "$lsb_dist" != "raspbian" ]; then
if [ "$lsb_dist" = "osmc" ]; then
# OSMC runs Raspbian
lsb_dist=raspbian
else
# We're Debian and don't even know it!
lsb_dist=debian
fi
dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
case "$dist_version" in
11)
dist_version="bullseye"
;;
10)
dist_version="buster"
;;
9)
dist_version="stretch"
;;
8)
dist_version="jessie"
;;
esac
fi
fi
fi
}
do_install() {
echo "# Executing docker install script, commit: $SCRIPT_COMMIT_SHA"
if command_exists docker; then
cat >&2 <<-'EOF'
Warning: the "docker" command appears to already exist on this system.
If you already have Docker installed, this script can cause trouble, which is
why we're displaying this warning and provide the opportunity to cancel the
installation.
If you installed the current Docker package using this script and are using it
again to update Docker, you can safely ignore this message.
You may press Ctrl+C now to abort this script.
EOF
( set -x; sleep 20 )
fi
user="$(id -un 2>/dev/null || true)"
sh_c='sh -c'
if [ "$user" != 'root' ]; then
if command_exists sudo; then
sh_c='sudo -E sh -c'
elif command_exists su; then
sh_c='su -c'
else
cat >&2 <<-'EOF'
Error: this installer needs the ability to run commands as root.
We are unable to find either "sudo" or "su" available to make this happen.
EOF
exit 1
fi
fi
if is_dry_run; then
sh_c="echo"
fi
# perform some very rudimentary platform detection
lsb_dist=$( get_distribution )
lsb_dist="$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')"
if is_wsl; then
echo
echo "WSL DETECTED: We recommend using Docker Desktop for Windows."
echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop"
echo
cat >&2 <<-'EOF'
You may press Ctrl+C now to abort this script.
EOF
( set -x; sleep 20 )
fi
case "$lsb_dist" in
ubuntu)
if command_exists lsb_release; then
dist_version="$(lsb_release --codename | cut -f2)"
fi
if [ -z "$dist_version" ] && [ -r /etc/lsb-release ]; then
dist_version="$(. /etc/lsb-release && echo "$DISTRIB_CODENAME")"
fi
;;
debian|raspbian)
dist_version="$(sed 's/\/.*//' /etc/debian_version | sed 's/\..*//')"
case "$dist_version" in
11)
dist_version="bullseye"
;;
10)
dist_version="buster"
;;
9)
dist_version="stretch"
;;
8)
dist_version="jessie"
;;
esac
;;
centos|rhel|sles)
if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
fi
;;
*)
if command_exists lsb_release; then
dist_version="$(lsb_release --release | cut -f2)"
fi
if [ -z "$dist_version" ] && [ -r /etc/os-release ]; then
dist_version="$(. /etc/os-release && echo "$VERSION_ID")"
fi
;;
esac
# Check if this is a forked Linux distro
check_forked
# Print deprecation warnings for distro versions that recently reached EOL,
# but may still be commonly used (especially LTS versions).
case "$lsb_dist.$dist_version" in
debian.stretch|debian.jessie)
deprecation_notice "$lsb_dist" "$dist_version"
;;
raspbian.stretch|raspbian.jessie)
deprecation_notice "$lsb_dist" "$dist_version"
;;
ubuntu.xenial|ubuntu.trusty)
deprecation_notice "$lsb_dist" "$dist_version"
;;
fedora.*)
if [ "$dist_version" -lt 33 ]; then
deprecation_notice "$lsb_dist" "$dist_version"
fi
;;
esac
# Run setup for each distro accordingly
case "$lsb_dist" in
ubuntu|debian|raspbian)
pre_reqs="apt-transport-https ca-certificates curl"
if ! command -v gpg > /dev/null; then
pre_reqs="$pre_reqs gnupg"
fi
apt_repo="deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] $DOWNLOAD_URL/linux/$lsb_dist $dist_version $CHANNEL"
(
if ! is_dry_run; then
set -x
fi
$sh_c 'apt-get update -qq >/dev/null'
$sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq $pre_reqs >/dev/null"
$sh_c 'mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings'
$sh_c "curl -fsSL \"$DOWNLOAD_URL/linux/$lsb_dist/gpg\" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg"
$sh_c "chmod a+r /etc/apt/keyrings/docker.gpg"
$sh_c "echo \"$apt_repo\" > /etc/apt/sources.list.d/docker.list"
$sh_c 'apt-get update -qq >/dev/null'
)
pkg_version=""
if [ -n "$VERSION" ]; then
if is_dry_run; then
echo "# WARNING: VERSION pinning is not supported in DRY_RUN"
else
# Will work for incomplete versions IE (17.12), but may not actually grab the "latest" if in the test channel
pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/~ce~.*/g" | sed "s/-/.*/g").*-0~$lsb_dist"
search_command="apt-cache madison 'docker-ce' | grep '$pkg_pattern' | head -1 | awk '{\$1=\$1};1' | cut -d' ' -f 3"
pkg_version="$($sh_c "$search_command")"
echo "INFO: Searching repository for VERSION '$VERSION'"
echo "INFO: $search_command"
if [ -z "$pkg_version" ]; then
echo
echo "ERROR: '$VERSION' not found amongst apt-cache madison results"
echo
exit 1
fi
if version_gte "18.09"; then
search_command="apt-cache madison 'docker-ce-cli' | grep '$pkg_pattern' | head -1 | awk '{\$1=\$1};1' | cut -d' ' -f 3"
echo "INFO: $search_command"
cli_pkg_version="=$($sh_c "$search_command")"
fi
pkg_version="=$pkg_version"
fi
fi
(
pkgs="docker-ce${pkg_version%=}"
if version_gte "18.09"; then
# older versions didn't ship the cli and containerd as separate packages
pkgs="$pkgs docker-ce-cli${cli_pkg_version%=} containerd.io"
fi
if version_gte "20.10"; then
pkgs="$pkgs docker-compose-plugin"
fi
if version_gte "20.10" && [ "$(uname -m)" = "x86_64" ]; then
# also install the latest version of the "docker scan" cli-plugin (only supported on x86 currently)
pkgs="$pkgs docker-scan-plugin"
fi
# TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel
if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then
pkgs="$pkgs docker-buildx-plugin"
fi
if ! is_dry_run; then
set -x
fi
$sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq --no-install-recommends $pkgs >/dev/null"
if version_gte "20.10"; then
# Install docker-ce-rootless-extras without "--no-install-recommends", so as to install slirp4netns when available
$sh_c "DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce-rootless-extras${pkg_version%=} >/dev/null"
fi
)
echo_docker_as_nonroot
exit 0
;;
centos|fedora|rhel)
if [ "$(uname -m)" != "s390x" ] && [ "$lsb_dist" = "rhel" ]; then
echo "Packages for RHEL are currently only available for s390x."
exit 1
fi
if [ "$lsb_dist" = "fedora" ]; then
pkg_manager="dnf"
config_manager="dnf config-manager"
enable_channel_flag="--set-enabled"
disable_channel_flag="--set-disabled"
pre_reqs="dnf-plugins-core"
pkg_suffix="fc$dist_version"
else
pkg_manager="yum"
config_manager="yum-config-manager"
enable_channel_flag="--enable"
disable_channel_flag="--disable"
pre_reqs="yum-utils"
pkg_suffix="el"
fi
repo_file_url="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE"
(
if ! is_dry_run; then
set -x
fi
$sh_c "$pkg_manager install -y -q $pre_reqs"
$sh_c "$config_manager --add-repo $repo_file_url"
if [ "$CHANNEL" != "stable" ]; then
$sh_c "$config_manager $disable_channel_flag docker-ce-*"
$sh_c "$config_manager $enable_channel_flag docker-ce-$CHANNEL"
fi
$sh_c "$pkg_manager makecache"
)
pkg_version=""
if [ -n "$VERSION" ]; then
if is_dry_run; then
echo "# WARNING: VERSION pinning is not supported in DRY_RUN"
else
pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\\\.ce.*/g" | sed "s/-/.*/g").*$pkg_suffix"
search_command="$pkg_manager list --showduplicates 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'"
pkg_version="$($sh_c "$search_command")"
echo "INFO: Searching repository for VERSION '$VERSION'"
echo "INFO: $search_command"
if [ -z "$pkg_version" ]; then
echo
echo "ERROR: '$VERSION' not found amongst $pkg_manager list results"
echo
exit 1
fi
if version_gte "18.09"; then
# older versions don't support a cli package
search_command="$pkg_manager list --showduplicates 'docker-ce-cli' | grep '$pkg_pattern' | tail -1 | awk '{print \$2}'"
cli_pkg_version="$($sh_c "$search_command" | cut -d':' -f 2)"
fi
# Cut out the epoch and prefix with a '-'
pkg_version="-$(echo "$pkg_version" | cut -d':' -f 2)"
fi
fi
(
pkgs="docker-ce$pkg_version"
if version_gte "18.09"; then
# older versions didn't ship the cli and containerd as separate packages
if [ -n "$cli_pkg_version" ]; then
pkgs="$pkgs docker-ce-cli-$cli_pkg_version containerd.io"
else
pkgs="$pkgs docker-ce-cli containerd.io"
fi
fi
if version_gte "20.10" && [ "$(uname -m)" = "x86_64" ]; then
# also install the latest version of the "docker scan" cli-plugin (only supported on x86 currently)
pkgs="$pkgs docker-scan-plugin"
fi
if version_gte "20.10"; then
pkgs="$pkgs docker-compose-plugin docker-ce-rootless-extras$pkg_version"
fi
# TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel
if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then
pkgs="$pkgs docker-buildx-plugin"
fi
if ! is_dry_run; then
set -x
fi
$sh_c "$pkg_manager install -y -q $pkgs"
)
echo_docker_as_nonroot
exit 0
;;
sles)
if [ "$(uname -m)" != "s390x" ]; then
echo "Packages for SLES are currently only available for s390x"
exit 1
fi
if [ "$dist_version" = "15.3" ]; then
sles_version="SLE_15_SP3"
else
sles_minor_version="${dist_version##*.}"
sles_version="15.$sles_minor_version"
fi
opensuse_repo="https://download.opensuse.org/repositories/security:SELinux/$sles_version/security:SELinux.repo"
repo_file_url="$DOWNLOAD_URL/linux/$lsb_dist/$REPO_FILE"
pre_reqs="ca-certificates curl libseccomp2 awk"
(
if ! is_dry_run; then
set -x
fi
$sh_c "zypper install -y $pre_reqs"
$sh_c "zypper addrepo $repo_file_url"
if ! is_dry_run; then
cat >&2 <<-'EOF'
WARNING!!
openSUSE repository (https://download.opensuse.org/repositories/security:SELinux) will be enabled now.
Do you wish to continue?
You may press Ctrl+C now to abort this script.
EOF
( set -x; sleep 30 )
fi
$sh_c "zypper addrepo $opensuse_repo"
$sh_c "zypper --gpg-auto-import-keys refresh"
$sh_c "zypper lr -d"
)
pkg_version=""
if [ -n "$VERSION" ]; then
if is_dry_run; then
echo "# WARNING: VERSION pinning is not supported in DRY_RUN"
else
pkg_pattern="$(echo "$VERSION" | sed "s/-ce-/\\\\.ce.*/g" | sed "s/-/.*/g")"
search_command="zypper search -s --match-exact 'docker-ce' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'"
pkg_version="$($sh_c "$search_command")"
echo "INFO: Searching repository for VERSION '$VERSION'"
echo "INFO: $search_command"
if [ -z "$pkg_version" ]; then
echo
echo "ERROR: '$VERSION' not found amongst zypper list results"
echo
exit 1
fi
search_command="zypper search -s --match-exact 'docker-ce-cli' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'"
# It's okay for cli_pkg_version to be blank, since older versions don't support a cli package
cli_pkg_version="$($sh_c "$search_command")"
pkg_version="-$pkg_version"
search_command="zypper search -s --match-exact 'docker-ce-rootless-extras' | grep '$pkg_pattern' | tail -1 | awk '{print \$6}'"
rootless_pkg_version="$($sh_c "$search_command")"
rootless_pkg_version="-$rootless_pkg_version"
fi
fi
(
pkgs="docker-ce$pkg_version"
if version_gte "18.09"; then
if [ -n "$cli_pkg_version" ]; then
# older versions didn't ship the cli and containerd as separate packages
pkgs="$pkgs docker-ce-cli-$cli_pkg_version containerd.io"
else
pkgs="$pkgs docker-ce-cli containerd.io"
fi
fi
if version_gte "20.10"; then
pkgs="$pkgs docker-compose-plugin docker-ce-rootless-extras$pkg_version"
fi
# TODO(thaJeztah) remove the $CHANNEL check once 22.06 and docker-buildx-plugin is published to the "stable" channel
if [ "$CHANNEL" = "test" ] && version_gte "22.06"; then
pkgs="$pkgs docker-buildx-plugin"
fi
if ! is_dry_run; then
set -x
fi
$sh_c "zypper -q install -y $pkgs"
)
echo_docker_as_nonroot
exit 0
;;
*)
if [ -z "$lsb_dist" ]; then
if is_darwin; then
echo
echo "ERROR: Unsupported operating system 'macOS'"
echo "Please get Docker Desktop from https://www.docker.com/products/docker-desktop"
echo
exit 1
fi
fi
echo
echo "ERROR: Unsupported distribution '$lsb_dist'"
echo
exit 1
;;
esac
exit 1
}
# wrapped up in a function so that we have some protection against only getting
# half the file during "curl | sh"
do_install

View File

@ -1 +0,0 @@
kubeadm join 192.168.56.10:6443 --token n91jl0.zc7bph3quqqgoxwl --discovery-token-ca-cert-hash sha256:d75fb0f9601165872ffefeb5a2211713a401015864648ece848416035d420040

View File

@ -2,144 +2,7 @@
- hosts: all
become: true
tasks:
- name: Set timezone to Europe/Paris
community.general.timezone:
name: Europe/Paris
- name: maj fichier hosts
ansible.builtin.blockinfile:
path: /etc/hosts
block: |
192.168.56.10 k8s-master
192.168.56.11 node-1
192.168.56.12 node-2
- name: Forwarding IPv4 and letting iptables see bridged traffic
ansible.builtin.blockinfile:
path: /etc/modules-load.d/k8s.conf
create: yes
block: |
overlay
br_netfilter
- name: charge module overlay
community.general.modprobe:
state: present
name: overlay
- name: charge module overlay et br_netfilter
community.general.modprobe:
state: present
name: br_netfilter
- name: persistance des bridges
ansible.builtin.blockinfile:
path: /etc/sysctl.d/k8s.conf
create: yes
block: |
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
- name: applique les parametres sysctl
command: "sysctl --system"
- name: Recupere get-docker
get_url:
url: "https://get.docker.com"
dest: /tmp/get-docker.sh
- name: lance get-docker - installe docker, containerd ...
command: 'sh /tmp/get-docker.sh'
- name: Add vagrant user to docker group
user:
name: vagrant
group: docker
- name: cree repertoire /etc/containerd
file:
path: /etc/containerd
state: directory
- name: genere config.toml (containerd)
#command: "sudo containerd config default | sudo tee /etc/containerd/config.toml"
shell: "containerd config default | tee /etc/containerd/config.toml"
- name: configure cgroup driver pour systemd (config.toml)
replace:
path: "/etc/containerd/config.toml"
regexp: 'SystemdCgroup = false'
replace: 'SystemdCgroup = true'
backup: yes
- name: redemarre containerd
service:
name: containerd
state: restarted
enabled: yes
- name: Remove swapfile from /etc/fstab
mount:
name: "{{ item }}"
fstype: swap
state: absent
with_items:
- swap
- none
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
- name: Add an apt signing key for Kubernetes
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
state: present
- name: Adding apt repository for Kubernetes
apt_repository:
repo: deb https://apt.kubernetes.io/ kubernetes-xenial main
state: present
filename: kubernetes.list
- name: Install Kubernetes binaries
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
- kubelet
- kubeadm
- kubectl
- name: Cree file kubelet
ansible.builtin.file:
path: /etc/default/kubelet
state: touch
- name: Configure node ip
lineinfile:
path: /etc/default/kubelet
line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }}
create: yes
- name: Restart kubelet
service:
name: kubelet
daemon_reload: yes
state: restarted
# - name: nettoie config.toml
# file:
# path: /etc/containerd/config.toml
# state: absent
- name: redemarre containerd
service:
name: containerd
state: restarted
- include_tasks: common.yml
- name: Initialize the Kubernetes cluster using kubeadm
command: kubeadm init --apiserver-advertise-address="{{ node_ip }}" --apiserver-cert-extra-sans="{{ node_ip }}" --node-name k8s-master --pod-network-cidr=192.168.0.0/16
@ -153,9 +16,6 @@
- name: Install calico pod network
become: false
#command: kubectl create -f https://docs.projectcalico.org/v3.24.5/getting-started/kubernetes/installation/hosted/calico.yaml
# command: kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml
# command: "kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml"
command: "kubectl create -f https://docs.projectcalico.org/manifests/calico-typha.yaml"
- name: Generate join command
@ -163,6 +23,7 @@
register: join_command
- name: Copy join command to local file
become: false
local_action: copy content="{{ join_command.stdout_lines[0] }}" dest="./join-command"
handlers:

View File

@ -1,91 +0,0 @@
---
- hosts: all
become: true
tasks:
- name: Recupere get-docker
get_url:
url: https://get.docker.com
dest: /tmp/get-docker.sh
- name: lance get-docker
command: 'sh /tmp/get-docker.sh'
- name: Add vagrant user to docker group
user:
name: vagrant
group: docker
- name: Remove swapfile from /etc/fstab
mount:
name: "{{ item }}"
fstype: swap
state: absent
with_items:
- swap
- none
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
- name: Add an apt signing key for Kubernetes
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
state: present
- name: Adding apt repository for Kubernetes
apt_repository:
repo: deb https://apt.kubernetes.io/ kubernetes-xenial main
state: present
filename: kubernetes.list
- name: Install Kubernetes binaries
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
- kubelet
- kubeadm
- kubectl
- name: cree kubelet
file:
path: /etc/default/kubelet
state: touch
- name: Configure node ip
lineinfile:
path: /etc/default/kubelet
line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }}
- name: Restart kubelet
service:
name: kubelet
daemon_reload: yes
state: restarted
- name: nettoie config.toml
file:
path: /etc/containerd/config.toml
state: absent
- name: redemarre containerd
service:
name: containerd
state: restarted
- name: Copy the join command to server location
copy:
src: join-command
dest: /tmp/join-command.sh
mode: 0777
- name: Join the node to cluster
command: sh /tmp/join-command.sh
handlers:
- name: docker status
service: name=docker state=started

View File

@ -2,139 +2,7 @@
- hosts: all
become: true
tasks:
- name: Set timezone to Europe/Paris
community.general.timezone:
name: Europe/Paris
- name: maj fichier hosts
ansible.builtin.blockinfile:
path: /etc/hosts
block: |
192.168.56.10 k8s-master
192.168.56.11 node-1
192.168.56.12 node-2
- name: Forwarding IPv4 and letting iptables see bridged traffic
ansible.builtin.blockinfile:
path: /etc/modules-load.d/k8s.conf
create: yes
block: |
overlay
br_netfilter
- name: charge module overlay
community.general.modprobe:
state: present
name: overlay
- name: charge module overlay et br_netfilter
community.general.modprobe:
state: present
name: br_netfilter
- name: persistance des bridges
ansible.builtin.blockinfile:
path: /etc/sysctl.d/k8s.conf
create: yes
block: |
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
- name: applique les parametres sysctl
command: "sysctl --system"
- name: Recupere get-docker
get_url:
url: "https://get.docker.com"
dest: /tmp/get-docker.sh
- name: lance get-docker - installe docker, containerd ...
command: 'sh /tmp/get-docker.sh'
- name: Add vagrant user to docker group
user:
name: vagrant
group: docker
- name: cree repertoire /etc/containerd
file:
path: /etc/containerd
state: directory
- name: genere config.toml (containerd)
#command: "sudo containerd config default | sudo tee /etc/containerd/config.toml"
shell: "containerd config default | tee /etc/containerd/config.toml"
- name: configure cgroup driver pour systemd (config.toml)
replace:
path: "/etc/containerd/config.toml"
regexp: 'SystemdCgroup = false'
replace: 'SystemdCgroup = true'
backup: yes
- name: redemarre containerd
service:
name: containerd
state: restarted
enabled: yes
- name: Remove swapfile from /etc/fstab
mount:
name: "{{ item }}"
fstype: swap
state: absent
with_items:
- swap
- none
- name: Disable swap
command: swapoff -a
when: ansible_swaptotal_mb > 0
- name: Add an apt signing key for Kubernetes
apt_key:
url: https://packages.cloud.google.com/apt/doc/apt-key.gpg
state: present
- name: Adding apt repository for Kubernetes
apt_repository:
repo: deb https://apt.kubernetes.io/ kubernetes-xenial main
state: present
filename: kubernetes.list
- name: Install Kubernetes binaries
apt:
name: "{{ packages }}"
state: present
update_cache: yes
vars:
packages:
- kubelet
- kubeadm
- kubectl
- name: Cree file kubelet
ansible.builtin.file:
path: /etc/default/kubelet
state: touch
- name: Configure node ip
lineinfile:
path: /etc/default/kubelet
line: KUBELET_EXTRA_ARGS=--node-ip={{ node_ip }}
create: yes
- name: Restart kubelet
service:
name: kubelet
daemon_reload: yes
state: restarted
- name: redemarre containerd
service:
name: containerd
state: restarted
- include_tasks: common.yml
- name: Copy the join command to server location
copy:

1
salut Normal file
View File

@ -0,0 +1 @@
salut

75
semaphore/Vagrantfile vendored Normal file
View File

@ -0,0 +1,75 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://vagrantcloud.com/search.
config.vm.box = "debian/bullseye64"
config.vm.hostname = "semaphore"
# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
# config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
config.vm.network "public_network"
# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.
# Enable provisioning with a shell script. Additional provisioners such as
# Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get install -y vim wget curl
SHELL
config.vm.provision "ansible" do |ansible|
ansible.playbook = "semaphore.yml"
end
end

55
semaphore/semaphore.yml Normal file
View File

@ -0,0 +1,55 @@
---
- hosts: all
become: true
tasks:
- name: Installe paquets git et ansible
apt:
name:
- git
- ansible
state: present
- name: Recupere paquet semaphore
get_url:
url: https://github.com/ansible-semaphore/semaphore/releases/download/v2.8.75/semaphore_2.8.75_linux_amd64.deb
dest: /tmp/
- name: Installie paquet semaphore
apt:
deb: semaphore_2.8.75_linux_amd64.deb
- name: cree repert /etc/semaphore
file:
path: /etc/semaphore
state: directory
mode: '0755'
- name: constitution fichier semaphore.service
blockinfile:
path: /etc/systemd/system/semaphore.service
mode: '0644'
create: yes
block: |
[Unit]
Description=Semaphore Ansible
Documentation=https://github.com/ansible-semaphore/semaphore
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/semaphore service --config=/etc/semaphore/config.json
SyslogIdentifier=semaphore
Restart=always
[Install]
WantedBy=multi-user.target
- name: reload daemon-reload
service:
name: semaphore
state: started
enabled: yes

81
wp-lb/Vagrantfile vendored Normal file
View File

@ -0,0 +1,81 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# Base VM OS configuration.
config.vm.box = "debian/bullseye64"
config.ssh.insert_key = false
config.vm.synced_folder '.', '/vagrant', disabled: true
# General VirtualBox VM configuration.
config.vm.provider :virtualbox do |v|
v.memory = 512
v.cpus = 1
v.linked_clone = true
v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
v.customize ["modifyvm", :id, "--ioapic", "on"]
end
# lb HAproxy.
config.vm.define "lb" do |lb|
lb.vm.hostname = "lb.test"
lb.vm.network :private_network, ip: "192.168.56.2"
lb.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
lb.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/setup-lb.yml"
end
end
# NFS.
config.vm.define "nfs" do |nfs|
nfs.vm.hostname = "nfs.test"
nfs.vm.network :private_network, ip: "192.168.56.6"
nfs.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
nfs.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/setup-nfs.yml"
end
end
# MySQL.
config.vm.define "db" do |db|
db.vm.hostname = "db.test"
db.vm.network :private_network, ip: "192.168.56.5"
db.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
db.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/setup-db.yml"
end
end
# Apache web1.
config.vm.define "web1" do |web1|
web1.vm.hostname = "web1.test"
web1.vm.network :private_network, ip: "192.168.56.3"
web1.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", 512]
end
web1.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
web1.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/setup-web.yml"
end
end
# Apachei web2.
config.vm.define "web2" do |web2|
web2.vm.hostname = "web2.test"
web2.vm.network :private_network, ip: "192.168.56.4"
web2.vm.provider :virtualbox do |v|
v.customize ["modifyvm", :id, "--memory", 512]
end
web2.vm.provision "shell",
inline: "sudo apt-get update ; sudo apt-get install -y vim curl wget"
web2.vm.provision "ansible" do |ansible|
ansible.playbook = "provision/setup-web.yml"
end
end
end

View File

@ -0,0 +1,43 @@
---
- hosts: all
become: true
tasks:
- name: modules python pour
apt:
name: python3-pymysql
state: present
- name: install mariadb-server
apt:
name: mariadb-server
state: present
- name: Cree Bd wordpress
mysql_db:
db: wordpressdb
login_unix_socket: /var/run/mysqld/mysqld.sock
state: present
- name: Ouvre port 3306 mariadb-server
replace:
path: /etc/mysql/mariadb.conf.d/50-server.cnf
regexp: '^bind-address.*'
replace: '#bind-adress = 127.0.0.1'
backup: yes
notify: restart mariadb
- name: Create MySQL user for wordpress.
mysql_user:
name: wordpressuser
password: wordpresspasswd
priv: "wordpressdb.*:ALL"
host: '%'
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
handlers:
- name: restart mariadb
ansible.builtin.service:
name: mariadb
state: restarted

View File

@ -0,0 +1,29 @@
---
- hosts: all
become: true
tasks:
- name: install haproxy
apt:
name: haproxy
state: present
- name: parametre backend et fontend
blockinfile:
path: /etc/haproxy/haproxy.cfg
block: |
frontend proxypublic
bind 192.168.56.2:80
default_backend fermeweb
backend fermeweb
balance roundrobin
option httpclose
#option httpchk HEAD / HTTP/1.0
server web1.test 192.168.56.3:80 check
#server web2.test 192.168.56.4:80 check
- name: redemarre haproxy
service:
name: haproxy
state: restarted
enabled: yes

View File

@ -0,0 +1,88 @@
---
- hosts: all
become: true
tasks:
- name: 00 - cree repertoire wordpress pour export nfs
file:
path: /exports/wordpress
state: directory
- name: 05 - Install nfs-server
apt:
name: nfs-server
state: present
- name: 10 - creation fichier exports nfs
ansible.builtin.blockinfile:
path: /etc/exports
block: |
/exports/wordpress 192.168.56.0/255.255.255.0 (rw,no_root_squash,subtree_check)
- name: 15 - Recupere wordpress.tar.gz
get_url:
url: "https://fr.wordpress.org/latest-fr_FR.tar.gz"
dest: /tmp/wordpress-6.1.1-fr_FR.tar.gz
- name: 20 - decompresse wordpress
unarchive:
src: /tmp/wordpress-6.1.1-fr_FR.tar.gz
dest: /exports/
remote_src: yes
- name: 22 - change owner et group pour repertoire wordpress
file:
path: /exports/wordpress
state: directory
recurse: yes
owner: www-data
group: www-data
- name: 25 - genere fichier de config wordpress
copy:
src: /exports/wordpress/wp-config-sample.php
dest: /exports/wordpress/wp-config.php
remote_src: yes
- name: 30 - genere fichier de config wordpress
copy:
src: /exports/wordpress/wp-config-sample.php
dest: /exports/wordpress/wp-config.php
remote_src: yes
- name: 35 - ajuste variable dbname dans fichier de config wp-config.php
replace:
path: /exports/wordpress/wp-config.php
regexp: "votre_nom_de_bdd"
replace: "wordpressdb"
backup: yes
- name: 40 ajuste variable dbusername dans fichier de config wp-config.php
replace:
path: /exports/wordpress/wp-config.php
regexp: "votre_utilisateur_de_bdd"
replace: "wordpressuser"
backup: yes
- name: 45 - ajuste variable mdp dans fichier de config wp-config.php
replace:
path: /exports/wordpress/wp-config.php
regexp: "votre_mdp_de_bdd"
replace: "wordpresspasswd"
backup: yes
- name: 50 - ajuste hostname fichier wp-config.php
replace:
path: /exports/wordpress/wp-config.php
regexp: "localhost"
replace: "192.168.56.5"
backup: yes
- name: 55 - relance nfs
service:
name: nfs-server
state: restarted
enabled: yes

View File

@ -0,0 +1,31 @@
---
- hosts: all
become: true
tasks:
- name: install apache ...
apt:
name:
- apache2
- php
- php-mbstring
- php-mysql
- mariadb-client
state: present
- name: install nfs-common ...
apt:
name: nfs-common
state: present
- name: montage nfs pour word press
blockinfile:
path: /etc/fstab
block: |
192.168.56.6:/exports/wordpress /var/www/html nfs soft,timeo=5,intr,rsize=8192,wsize=8192,wsize=8192 0 0
- name: monte export wordpress
ansible.posix.mount:
path: /var/www/html
state: mounted
fstype: nfs
src: 192.168.56.6:/exports/wordpress