diff --git a/defaults/main.yml b/defaults/main.yml index 1187749..665e2dd 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -5,11 +5,10 @@ mastodon_host: mastodon.example.com #Use HTTP only for Vagrant testing or for reverse proxy purposes. use_http: true ansible_python_interpreter: "/usr/bin/python2" -docker_compose_version: "1.16.1" -docker_compose_hash: "1804b0ce6596efe707b9cab05d74b161833ed503f0535a937dd5d17bea8fc50a" mastodon_docker_image: "moritzheiber/mastodon-docker" mastodon_docker_network: "mastodon_network" +docker_command: podman install_python_packages: - package: "docker" @@ -17,13 +16,15 @@ uninstall_python_packages: - package: "docker-py" install_packages: - - package: "docker-ce" + - package: "podman" - package: "python-pip-whl" - package: "python-setuptools" uninstall_packages: - package: "docker-engine" - package: "docker" + - package: "docker-ce" + - package: "docker-ce-cli" - package: "dockerio" run_preflight_checks: "true" diff --git a/tasks/docker.yml b/tasks/docker.yml index dd59679..f7fbac3 100644 --- a/tasks/docker.yml +++ b/tasks/docker.yml @@ -2,4 +2,8 @@ - name: Bootstrapping import_tasks: docker/init.yml +- import_tasks: ubuntu.yml + when: ansible_distribution == 'Ubuntu' + - import_tasks: docker/core.yml +- import_tasks: docker/docker.yml diff --git a/tasks/docker/core.yml b/tasks/docker/core.yml index 22920cd..c80038d 100644 --- a/tasks/docker/core.yml +++ b/tasks/docker/core.yml @@ -1,16 +1,5 @@ --- -- import_tasks: ubuntu.yml - when: ansible_facts['distribution'] == 'Ubuntu' - -- name: Install docker-compose - get_url: - url: "https://github.com/docker/compose/releases/download/{{ docker_compose_version }}/docker-compose-Linux-x86_64" - dest: "/usr/bin/docker-compose" - sha256sum: "{{ docker_compose_hash }}" - mode: 0755 - become: true - - name: Install Docker packages package: name: "{{ item.package }}" @@ -31,18 +20,13 @@ state: absent with_items: "{{ uninstall_python_packages }}" -- name: Install docker-compose Python - pip: - name: docker-compose - #version: 1.17.0rc1 - - name: Check for existing network - raw: "docker network inspect {{ mastodon_docker_network }}" + raw: "{{ docker_command }} network inspect {{ mastodon_docker_network }}" register: docker_network ignore_errors: True become: true - name: Create main docker network - raw: "docker network create -d bridge {{ mastodon_docker_network }}" + raw: "{{ docker_command }} network create -d bridge {{ mastodon_docker_network }}" when: docker_network is failed become: true diff --git a/tasks/docker/docker.yml b/tasks/docker/docker.yml new file mode 100644 index 0000000..37cb6c0 --- /dev/null +++ b/tasks/docker/docker.yml @@ -0,0 +1,100 @@ +--- +- docker_service: + project_name: redis + definition: + version: "2.3" + services: + redis: + image: redis:4.0-alpine + networks: + - "{{ mastodon_docker_network }}" + restart: on-failure + networks: + "{{ mastodon_docker_network }}": + external: true + +- docker_service: + project_name: db + definition: + version: "2.3" + services: + db: + image: postgresql:9.6-alpine + networks: + - "{{ mastodon_docker_network }}" + restart: on-failure + env_file: /mastodon/.env + environment: + - POSTGRES_USER: "{{ db_user }}" + - POSTGRES_PASSWORD: "{{ db_password }}" + - POSTGRES_DB: "{{ db_name }}" + networks: + "{{ mastodon_docker_network }}": + external: true + +- docker_service: + project_name: web + definition: + version: "2.3" + services: + web: + image: "gargron/mastodon:v{{ mastodon_release }}" + networks: + - "{{ mastodon_docker_network }}" + command: bundle exec rails s -p 3000 -b '0.0.0.0' + restart: on-failure + env_file: /mastodon/.env + networks: + "{{ mastodon_docker_network }}": + external: true + # notify: "restart caddy webserver" + +- docker_service: + project_name: sidekiq + definition: + version: "2.3" + services: + sidekiq: + image: "moritzheiber/mastodon-docker" + networks: + - "{{ mastodon_docker_network }}" + command: bundle exec sidekiq -q default -q mailers -q pull -q push + restart: on-failure + env_file: /mastodon/.env + networks: + "{{ mastodon_docker_network }}": + external: true + +- docker_service: + project_name: streaming + definition: + version: "2.3" + services: + streaming: + image: "moritzheiber/mastodon-docker" + networks: + - "{{ mastodon_docker_network }}" + command: npm run start + restart: on-failure + env_file: /mastodon/.env + networks: + "{{ mastodon_docker_network }}": + external: true + # notify: "restart caddy webserver" + +# - docker_service: +# project_name: web +# definition: +# version: "2.3" +# services: +# web: +# image: "moritzheiber/mastodon-docker" +# networks: +# - "{{ mastodon_docker_network }}" +# command: bundle exec rails s -p 3000 -b '0.0.0.0' +# restart: on-failure +# env_file: /mastodon/.env +# networks: +# "{{ mastodon_docker_network }}": +# external: true + # notify: "restart caddy webserver" diff --git a/tasks/docker/ubuntu.yml b/tasks/docker/ubuntu.yml index 41cd6ab..223b2d0 100644 --- a/tasks/docker/ubuntu.yml +++ b/tasks/docker/ubuntu.yml @@ -12,15 +12,18 @@ become: true with_items: - { id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88", url: "https://download.docker.com/linux/ubuntu/gpg" } + when: docker_command == 'docker' - name: Install Docker repository apt_repository: repo={{ item.repo }} state=present become: true with_items: - { repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" } + when: docker_command == 'docker' - name: Run apt update apt: update_cache: true cache_valid_time: 3600 become: true + when: docker_command == 'docker' diff --git a/tasks/main.yml b/tasks/main.yml index 4f3eab1..805f57b 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -3,6 +3,9 @@ include_tasks: bare.yml when: mastodon_bare_installation +- import_tasks: ubuntu.yml + when: ansible_facts['distribution'] == 'Ubuntu' + - name: Ensure docker installation include_tasks: docker.yml when: not mastodon_bare_installation