diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index 9a43d03..0000000 --- a/Vagrantfile +++ /dev/null @@ -1,39 +0,0 @@ -Vagrant.require_version ">= 2.0.0" -PORT = 19022 - -def provisioned?(vm="default", provider="virtualbox") - File.exist?(".vagrant/machines/#{vm}/#{provider}/action_provision") -end - -Vagrant.configure(2) do |config| - config.vm.network :private_network, ip: "192.168.56.10" - config.vm.network :forwarded_port, guest: PORT, host: PORT - - config.vm.box = "ubuntu/focal64" - config.vm.hostname = "datacoop" - - config.vm.provider :virtualbox do |v| - v.cpus = 8 - v.memory = 16384 - end - - config.vm.provision :ansible do |ansible| - ansible.compatibility_mode = "2.0" - ansible.playbook = "playbook.yml" - ansible.ask_vault_pass = true - ansible.verbose = "v" - - # If the VM is already provisioned, we need to use the new port - if provisioned? - config.ssh.guest_port = PORT - ansible.extra_vars = { - ansible_port: PORT, - from_vagrant: true - } - else - ansible.extra_vars = { - from_vagrant: true - } - end - end -end diff --git a/ansible.cfg b/ansible.cfg index 5f6cbac..b06d3c5 100644 --- a/ansible.cfg +++ b/ansible.cfg @@ -2,7 +2,7 @@ ask_vault_pass = True inventory = datacoop_hosts interpreter_python = /usr/bin/python3 -remote_user = root +remote_user = ansible retry_files_enabled = True use_persistent_connections = True forks = 10 diff --git a/deploy.sh b/deploy.sh index ba74d6f..6673dd9 100755 --- a/deploy.sh +++ b/deploy.sh @@ -2,20 +2,15 @@ usage () { { - echo "Usage: $0 [--vagrant]" - echo "Usage: $0 [--vagrant] base" - echo "Usage: $0 [--vagrant] users" - echo "Usage: $0 [--vagrant] services [SERVICE]" + echo "Usage: $0" + echo "Usage: $0 base" + echo "Usage: $0 users" + echo "Usage: $0 services [--deploy] [SERVICE]" } >&2 } BASE_CMD="ansible-playbook playbook.yml" - -if [ "$1" = "--vagrant" ]; then - BASE_CMD="$BASE_CMD --verbose --inventory=vagrant_host" - VAGRANT_VAR="from_vagrant" - shift -fi +DEPLOY="false" if [ -z "$(ansible-galaxy collection list community.general 2>/dev/null)" ]; then echo "Installing community.general modules" @@ -28,19 +23,24 @@ if [ -z "$1" ]; then else case $1 in "services") + if [ -n "$2" && "$2" = "--deploy" ]; then + DEPLOY="true" + shift + fi + if [ -z "$2" ]; then echo "Deploying all services!" - eval "$BASE_CMD --tags setup_services $(test -z "$VAGRANT_VAR" || printf '%s' "$VAGRANT_VAR=true")" + $BASE_CMD --tags setup_services --extra-vars "deploy_services=$DEPLOY" else echo "Deploying service: $2" - $BASE_CMD --tags setup_services --extra-vars '{"single_service": "'"$2"'"'"$(test -z "$VAGRANT_VAR" || printf '%s' ', "'"$VAGRANT_VAR"'": true')"'}' + $BASE_CMD --tags setup_services --extra-vars "deploy_services=$DEPLOY" --extra-vars "single_service=$2" fi ;; "base") - eval "$BASE_CMD --tags base_only $(test -z "$VAGRANT_VAR" || printf '%s' "$VAGRANT_VAR=true")" + $BASE_CMD --tags base_only ;; "users") - eval "$BASE_CMD --tags setup-users $(test -z "$VAGRANT_VAR" || printf '%s' "$VAGRANT_VAR=true")" + $BASE_CMD --tags setup-users ;; *) usage diff --git a/host_vars/cavall.yml b/host_vars/cavall.yml index 63021d8..abf269b 100644 --- a/host_vars/cavall.yml +++ b/host_vars/cavall.yml @@ -2,4 +2,7 @@ # code: language=ansible --- ansible_host: 85.209.118.134 -fqdn: cavall.servers.data.coop +ansible_port: 22 + +hostname: "{{ inventory_hostname }}" +fqdn: "{{ hostname }}.servers.data.coop" diff --git a/host_vars/folald.yml b/host_vars/folald.yml index b7db177..39d1672 100644 --- a/host_vars/folald.yml +++ b/host_vars/folald.yml @@ -3,4 +3,9 @@ --- ansible_host: 85.209.118.134 ansible_port: 19022 -fqdn: folald.vm.cavall.servers.data.coop + +vm_host: cavall +vm_type: qemu + +hostname: "{{ inventory_hostname }}" +fqdn: "{{ hostname }}.vm.{{ vm_host }}.servers.data.coop" diff --git a/host_vars/hestur.yml b/host_vars/hestur.yml index 8d25f20..7314872 100644 --- a/host_vars/hestur.yml +++ b/host_vars/hestur.yml @@ -2,4 +2,10 @@ # code: language=ansible --- ansible_host: 159.223.17.241 -fqdn: hestur.servers.data.coop +ansible_port: 22 + +vm_host: cloud +vm_type: vps + +hostname: "{{ inventory_hostname }}" +fqdn: "{{ hostname }}.vm.{{ vm_host }}.servers.data.coop" diff --git a/host_vars/poltre.yml b/host_vars/poltre.yml index 7f80a86..c0c73bf 100644 --- a/host_vars/poltre.yml +++ b/host_vars/poltre.yml @@ -3,4 +3,9 @@ --- ansible_host: 85.209.118.142 ansible_port: 19022 -fqdn: poltre.vm.cavall.servers.data.coop + +vm_host: cavall +vm_type: qemu + +hostname: "{{ inventory_hostname }}" +fqdn: "{{ hostname }}.vm.{{ vm_host }}.servers.data.coop" diff --git a/host_vars/varsa.yml b/host_vars/varsa.yml index 720189e..43f1ce4 100644 --- a/host_vars/varsa.yml +++ b/host_vars/varsa.yml @@ -3,4 +3,9 @@ --- ansible_host: 85.209.118.143 ansible_port: 19022 -fqdn: varsa.vm.cavall.servers.data.coop + +vm_host: cavall +vm_type: qemu + +hostname: "{{ inventory_hostname }}" +fqdn: "{{ hostname }}.vm.{{ vm_host }}.servers.data.coop" diff --git a/inventory.ini b/inventory.ini index 29bd7fb..46a9ef0 100644 --- a/inventory.ini +++ b/inventory.ini @@ -16,4 +16,7 @@ folald [virtual:children] production staging -control \ No newline at end of file +control + +[physical:children] +proxmox \ No newline at end of file diff --git a/roles/docker/tasks/block.yml b/roles/docker/tasks/block.yml index 9712d4f..fb49f62 100644 --- a/roles/docker/tasks/block.yml +++ b/roles/docker/tasks/block.yml @@ -1,27 +1,30 @@ # vim: ft=yaml.ansible # code: language=ansible --- -- name: Create volume folder for service {{ service.name }} +- name: Create volume folder for service '{{ service.name }}' file: name: "{{ service.vars.volume_folder }}" state: directory -- name: Upload Compose file for service {{ service.name }} +- name: Upload Compose file for service '{{ service.name }}' template: src: compose-files/{{ service.name }}.yml.j2 dest: "{{ service.vars.volume_folder }}/docker-compose.yml" owner: root mode: u=rw,go= -- name: Run pre-deployment tasks for service {{ service.name }} - include_tasks: pre_deploy/{{ service.name }}.yml +- name: Run pre-deployment tasks for service '{{ service.name }}' + ansible.builtin.include_tasks: pre_deploy/{{ service.name }}.yml when: service.vars.pre_deploy_tasks is defined and service.vars.pre_deploy_tasks -- name: Deploy Compose stack for service {{ service.name }} - command: docker compose up -d --remove-orphans --pull always - args: - chdir: "{{ service.vars.volume_folder }}" +- name: Deploy service '{{ service.name }}' + when: deploy_services is defined and deploy_services + block: + - name: Deploy Compose stack for service '{{ service.name }}' + ansible.builtin.command: docker compose up -d --remove-orphans --pull always + args: + chdir: "{{ service.vars.volume_folder }}" -- name: Run post-deployment tasks for service {{ service.name }} - include_tasks: post_deploy/{{ service.name }}.yml - when: service.vars.post_deploy_tasks is defined and service.vars.post_deploy_tasks + - name: Run post-deployment tasks for service '{{ service.name }}' + ansible.builtin.include_tasks: post_deploy/{{ service.name }}.yml + when: service.vars.post_deploy_tasks is defined and service.vars.post_deploy_tasks diff --git a/roles/docker/templates/compose-files/restic.yml.j2 b/roles/docker/templates/compose-files/restic.yml.j2 index ac7633f..04d618e 100644 --- a/roles/docker/templates/compose-files/restic.yml.j2 +++ b/roles/docker/templates/compose-files/restic.yml.j2 @@ -7,8 +7,8 @@ services: backup: image: mazzolino/restic:{{ services.restic.version }} restart: always - hostname: {{ inventory_hostname_short }} - domainname: {{ inventory_hostname }} + hostname: {{ hostname }} + domainname: {{ fqdn }} environment: RUN_ON_STARTUP: false BACKUP_CRON: "0 30 3 * * *" diff --git a/roles/os_base/tasks/main.yml b/roles/os_base/tasks/main.yml index c9a7d95..ee892ee 100644 --- a/roles/os_base/tasks/main.yml +++ b/roles/os_base/tasks/main.yml @@ -1,10 +1,6 @@ # vim: ft=yaml.ansible # code: language=ansible --- -- ansible.builtin.import_tasks: ssh-port.yml - tags: [change-ssh-port] - when: ansible_port != 22 - - ansible.builtin.import_tasks: base.yml tags: [install-base-packages] diff --git a/vagrant.ini b/vagrant.ini deleted file mode 100644 index c49d9be..0000000 --- a/vagrant.ini +++ /dev/null @@ -1,2 +0,0 @@ -[production] -localhost ansible_port=19022