repo
project tree
# cd ~/terra/git/
# tree
.
├── README.md
├── ansible.cfg -> template/ansible/ansible.cfg
├── inventories
│ └── hosts
├── roles
│ └── gitlab
│ ├── handlers
│ │ └── main.yml
│ ├── tasks
│ │ ├── configure_ssh.yml
│ │ ├── configure_ssl.yml
│ │ ├── configure_url.yml
│ │ ├── install_package.yml
│ │ ├── magage_settings.yml
│ │ ├── magage_users.yml
│ │ ├── main.yml
│ │ ├── renew_token.yml
│ │ └── schedule_backup.yml
│ └── vars
│ ├── main.yml
│ └── main.yml.sample
├── site.yml
└── template
...
template/terraform/terraform.tfvarsservers_config = {
git = {
name = "git"
flavor_id = "xxx"
image_id = "xxx"
key_pair = "teityura"
volume_size = 30
security_groups = ["xxx"]
net_int = "xxx"
net_ext = "ext_net"
ssh_user = "almalinux"
ssh_key_path = "/path/to/my/key"
},
}
volumes_config = {
git = {
volume_size = 10,
volume_mount_path = "/backup"
}
}
git role
roles/git/tasks/main.yml---
- name: Install gitlab
import_tasks: install_package.yml
- name: Configure core settings
include_tasks: configure_url.yml
- name: Configure ssl settings
include_tasks: configure_ssl.yml
- name: Configure gitlab_shell_ssh_port
include_tasks: configure_ssh.yml
- name: Apply configure
meta: flush_handlers
- name: Renew token
import_tasks: renew_token.yml
when: gitlab_api_token is not defined
- name: Manage users api
import_tasks: magage_users.yml
- name: Manage settings api
import_tasks: magage_settings.yml
- name: Apply configure
meta: flush_handlers
- name: Backup setting
import_tasks: schedule_backup.yml
roles/git/vars/main.yml---
# cat terraform/terraform.tfstate | jq -r '.outputs.servers_detail.value.[].floating_ip
gitlab_ip: xxxxx
gitlab_init_password: xxxxx
# gitlab_api_token: "<token_here>"
gitlab_version: 18.2.1
gitlab_domain: git.teityura.com
sshkey_path: xxxxx
gitlab_users:
- name: xxxxx
username: xxxxx
email: xxxxx
admin: true
groups:
- group_name: xxxxx
access_level: xxxxx
gitlab_groups:
- { name: terra, path: terra, description: 'terraform projects', visibility: public }
- { name: garden, path: garden, description: 'public repos', visibility: public }
- { name: house, path: house, description: 'internal repos', visibility: internal }
- { name: cellar, path: cellar, description: 'private repos', visibility: private }
gitlab_settings:
signup_enabled: false
home_page_url: "https://{{ gitlab_domain }}/explore"
docs
- Install GitLab | GitLab Docs