openldap: add role and ci pipeline
This commit is contained in:
parent
2e0a44ab75
commit
447515be88
67
.github/workflows/pulumi-cloud-resource-openldap.yml
vendored
Normal file
67
.github/workflows/pulumi-cloud-resource-openldap.yml
vendored
Normal file
@ -0,0 +1,67 @@
|
||||
name: setup openldap
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches: [ 'main' ]
|
||||
|
||||
env:
|
||||
DNS_AK: ${{ secrets.DNS_AK }}
|
||||
DNS_SK: ${{ secrets.DNS_SK }}
|
||||
SSH_PUBLIC_KEY: ${{ secrets.SSH_PUBLIC_KEY }}
|
||||
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
|
||||
PULUMI_CONFIG_PASSPHRASE: ${{ secrets.PULUMI_PASS }}
|
||||
PULUMI_DISABLE_CI_DETECTION: true
|
||||
AWS_REGION: ap-east-1
|
||||
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./playbook
|
||||
|
||||
jobs:
|
||||
k3s-cluster:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: run playbook
|
||||
shell: bash
|
||||
run: |
|
||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
||||
|
||||
sudo apt install jq ansible -y
|
||||
sudo rm -rvf /home/runner/.pulumi/
|
||||
curl -o setup.sh https://get.pulumi.com && sh setup.sh --version 3.57.0
|
||||
|
||||
pulumi login s3://pulumi-aws-dev
|
||||
pulumi stack select dev
|
||||
|
||||
db_server_public_ip=`pulumi stack output --json | jq '.db_server_public_ip'`
|
||||
k3s_server_public_ip=`pulumi stack output --json | jq '.k3s_server_public_ip'`
|
||||
|
||||
mkdir -pv ~/.ssh/
|
||||
cat > ~/.ssh/id_rsa << EOF
|
||||
${SSH_PRIVATE_KEY}
|
||||
EOF
|
||||
sudo chmod 0400 ~/.ssh/id_rsa
|
||||
md5sum ~/.ssh/id_rsa
|
||||
|
||||
cat > hosts/inventory << EOF
|
||||
[master]
|
||||
k3s-server ansible_host=$k3s_server_public_ip
|
||||
|
||||
[node]
|
||||
db-server ansible_host=$db_server_public_ip
|
||||
|
||||
[all:vars]
|
||||
ansible_port=22
|
||||
ansible_ssh_user=ubuntu
|
||||
ansible_ssh_private_key_file=~/.ssh/id_rsa
|
||||
ansible_host_key_checking=False
|
||||
dns_ak=$DNS_AK
|
||||
dns_sk=$DNS_SK
|
||||
lb_ip=$k3s_server_public_ip
|
||||
EOF
|
||||
ansible-playbook -i hosts/inventory jobs/init_openldap -D
|
||||
13
playbook/jobs/init_openldap
Normal file
13
playbook/jobs/init_openldap
Normal file
@ -0,0 +1,13 @@
|
||||
- name: setup redis
|
||||
hosts: all
|
||||
user: root
|
||||
become: yes
|
||||
gather_facts: yes
|
||||
tasks:
|
||||
- include_role:
|
||||
name: openldap
|
||||
vars:
|
||||
group: master
|
||||
namespace: itsm
|
||||
domain: onwalk.net
|
||||
secret: openldap-tls
|
||||
19
playbook/roles/cert-manager/files/certs.sh
Normal file
19
playbook/roles/cert-manager/files/certs.sh
Normal file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
export Ali_Key=$1
|
||||
export Ali_Secret=$2
|
||||
export domain=$3
|
||||
export secret=$4
|
||||
export namespace=$5
|
||||
|
||||
curl https://get.acme.sh | sh -s email=156405189@qq.com
|
||||
|
||||
rm -rvf ${domain}.* -f
|
||||
sh ~/.acme.sh/acme.sh --set-default-ca --server zerossl --issue --force --dns dns_ali -d ${domain} -d "*.${domain}"
|
||||
cat ~/.acme.sh/${domain}/${domain}.cer > ${domain}.pem
|
||||
cat ~/.acme.sh/${domain}/ca.cer >> ${domain}.pem
|
||||
cat ~/.acme.sh/${domain}/${domain}.key > ${domain}.key
|
||||
|
||||
kubectl create namespace $namespace || echo true
|
||||
kubectl delete secret tls $secret -n $namespace || echo true
|
||||
kubectl create secret tls $secret --cert=${domain}.pem --key=${domain}.key -n $namespace
|
||||
4
playbook/roles/cert-manager/files/setup-mysql.sh
Normal file
4
playbook/roles/cert-manager/files/setup-mysql.sh
Normal file
@ -0,0 +1,4 @@
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm repo up
|
||||
kubectl create ns database
|
||||
helm upgrade --install mysql bitnami/mysql -n database
|
||||
3
playbook/roles/cert-manager/tasks/main.yml
Executable file
3
playbook/roles/cert-manager/tasks/main.yml
Executable file
@ -0,0 +1,3 @@
|
||||
- name: Setup Kube cert secret
|
||||
script: files/certs.sh {{ dns_ak }} {{ dns_sk }} {{ domain }} {{ secret }} {{ namespace }}
|
||||
when: inventory_hostname in groups[group]
|
||||
4
playbook/roles/oidc-server/files/setup-redis.sh
Normal file
4
playbook/roles/oidc-server/files/setup-redis.sh
Normal file
@ -0,0 +1,4 @@
|
||||
helm repo add bitnami https://charts.bitnami.com/bitnami
|
||||
helm repo up
|
||||
kubectl create ns redis
|
||||
helm upgrade --install redis bitnami/redis -n redis
|
||||
3
playbook/roles/oidc-server/tasks/main.yml
Executable file
3
playbook/roles/oidc-server/tasks/main.yml
Executable file
@ -0,0 +1,3 @@
|
||||
- name: Setup Redis Server
|
||||
script: files/setup-redis.sh
|
||||
when: inventory_hostname in groups[group]
|
||||
37
playbook/roles/openldap/files/setup-openldap.sh
Normal file
37
playbook/roles/openldap/files/setup-openldap.sh
Normal file
@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
export domain=$1
|
||||
export secret=$2
|
||||
export namespace=$3
|
||||
|
||||
cat > openldap-vaules.yaml << EOF
|
||||
global:
|
||||
ldapDomain: $domain
|
||||
phpldapadmin:
|
||||
enabled: true
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: nginx
|
||||
hosts:
|
||||
- openldap-admin.${domain}
|
||||
tls:
|
||||
- secretName: ${secret}
|
||||
hosts:
|
||||
- openldap-admin.${domain}
|
||||
ltb-passwd:
|
||||
enabled: true
|
||||
ingress:
|
||||
enabled: true
|
||||
ingressClassName: nginx
|
||||
hosts:
|
||||
- openldap-ltb.${domain}
|
||||
tls:
|
||||
- secretName: ${secret}
|
||||
hosts:
|
||||
- openldap-ltb.${domain}
|
||||
EOF
|
||||
|
||||
helm repo add helm-openldap https://jp-gouin.github.io/helm-openldap/
|
||||
helm repo up
|
||||
kubectl create ns ${namespace} || echo true
|
||||
helm upgrade --install openldap helm-openldap/openldap-stack-ha -n ${namespace} --create-namespace -f openldap-vaules.yaml
|
||||
2
playbook/roles/openldap/meta/main.yml
Normal file
2
playbook/roles/openldap/meta/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: cert-manager
|
||||
3
playbook/roles/openldap/tasks/main.yml
Executable file
3
playbook/roles/openldap/tasks/main.yml
Executable file
@ -0,0 +1,3 @@
|
||||
- name: Setup OpenLdap Server
|
||||
script: files/setup-openldap.sh {{ domain }} {{ secret }} {{ namespace }}
|
||||
when: inventory_hostname in groups[group]
|
||||
Loading…
Reference in New Issue
Block a user