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 ...

terraform.tfvars

template/terraform/terraform.tfvars
servers_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

  • tasks/main.yml
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
  • vars/main.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