diff --git a/Vagrantfile b/Vagrantfile index 41349a7..311dad0 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -9,7 +9,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| flarior.vm.box_url = "ftp://ftp.lugons.org/vagrant/debian-8.0-x86_64.box" flarior.vm.network :private_network, ip: "192.168.7.10" flarior.vm.hostname = "vagrant.flarior.com" - flarior.vm.provision :ansible, run: "always" do |ansible| + flarior.vm.provision :ansible do |ansible| ansible.playbook = "provision/site.yml" ansible.host_key_checking = false ansible.groups = { diff --git a/provision/group_vars/all b/provision/group_vars/all new file mode 100644 index 0000000..729e851 --- /dev/null +++ b/provision/group_vars/all @@ -0,0 +1,3 @@ +flarior_postgresql_db: flarior +flarior_postgresql_user: flarior +flarior_postgresql_superuser: root diff --git a/provision/group_vars/vagrant b/provision/group_vars/vagrant index 155b89e..79e54fa 100644 --- a/provision/group_vars/vagrant +++ b/provision/group_vars/vagrant @@ -3,7 +3,7 @@ --- stage: vagrant -db_username: flarior -db_password: password -db_name: flarior flask_environment: dev +docker_postgresql_extra_params: -p 5432:5432 +flarior_postgresql_password: flarior +flarior_postgresql_superuser_password: flarior diff --git a/provision/roles/common/pre_tasks/main.yml b/provision/roles/common/pre_tasks/main.yml index fbcbb27..141d321 100644 --- a/provision/roles/common/pre_tasks/main.yml +++ b/provision/roles/common/pre_tasks/main.yml @@ -12,3 +12,4 @@ dest: /etc/apt/sources.list.d/jessie-backports.list owner: root group: root + diff --git a/provision/roles/common/tasks/main.yml b/provision/roles/common/tasks/main.yml index d317b80..4a15009 100644 --- a/provision/roles/common/tasks/main.yml +++ b/provision/roles/common/tasks/main.yml @@ -14,12 +14,3 @@ apt: pkg: "{{ item.name }}" state: latest - -- name: initialize taskwarrior - file: - path: ~/.taskrc - state: touch - -- name: initialize taskwarrior - shell: task - ignore_errors: yes diff --git a/provision/roles/common/vars/main.yml b/provision/roles/common/vars/main.yml index 71e79ee..28ca1de 100644 --- a/provision/roles/common/vars/main.yml +++ b/provision/roles/common/vars/main.yml @@ -1,5 +1,5 @@ --- common_packages: + - name: docker.io - name: git - - name: taskwarrior - - name: wajig + - name: unzip diff --git a/provision/roles/postgresql/tasks/main.yml b/provision/roles/postgresql/tasks/main.yml index d9edb51..81dca9d 100644 --- a/provision/roles/postgresql/tasks/main.yml +++ b/provision/roles/postgresql/tasks/main.yml @@ -1,31 +1,51 @@ --- -- name: install postgresql +- name: install packages sudo: yes + with_items: postgresql_packages apt: - pkg: postgresql + pkg: "{{ item.name }}" state: latest + +- name: add postgresql service + sudo: yes + template: + src: postgresql.service.j2 + dest: /lib/systemd/system/postgresql.service + owner: root + group: root notify: - restart postgresql -- name: install packages +- name: reload systemd sudo: yes - with_items: postgresql_packages - apt: - pkg: "{{ item.name }}" - state: latest + command: systemctl daemon-reload -- name: create db +- name: start postgresql sudo: yes - sudo_user: postgres - postgresql_db: - name: "{{ db_name }}" - encoding: 'UTF-8' - template: 'template0' + service: + name: postgresql + enabled: yes + state: restarted + +- name: wait for postgresql + wait_for: + delay: 5 + port: 5432 - name: create user - sudo: yes - sudo_user: postgres postgresql_user: - name: "{{ db_username }}" - password: "{{ db_password }}" - db: "{{ db_name }}" + name: "{{ flarior_postgresql_user }}" + password: "{{ flarior_postgresql_password }}" + login_host: 127.0.0.1 + login_user: "{{ flarior_postgresql_superuser }}" + login_password: "{{ flarior_postgresql_superuser_password }}" + +- name: create db + postgresql_db: + name: "{{ flarior_postgresql_db }}" + encoding: UTF-8 + template: template0 + login_host: 127.0.0.1 + login_user: "{{ flarior_postgresql_superuser }}" + login_password: "{{ flarior_postgresql_superuser_password }}" + owner: "{{ flarior_postgresql_user }}" diff --git a/provision/roles/postgresql/templates/postgresql.service.j2 b/provision/roles/postgresql/templates/postgresql.service.j2 new file mode 100644 index 0000000..ff83ce5 --- /dev/null +++ b/provision/roles/postgresql/templates/postgresql.service.j2 @@ -0,0 +1,16 @@ +[Unit] +Description=PostgreSQL +After=docker.service networking.service +Requires=docker.service networking.service +Wants=docker.service networking.service + +[Service] +TimeoutStartSec=0 +ExecStartPre=/usr/bin/docker pull postgres:latest +ExecStartPre=-/usr/bin/docker kill postgresql +ExecStartPre=-/usr/bin/docker rm postgresql +ExecStart=/usr/bin/docker run {{ docker_postgresql_extra_params }} -e POSTGRES_USER={{ flarior_postgresql_superuser }} -e POSTGRES_PASSWORD={{ flarior_postgresql_superuser_password }} -v /var/lib/docker/volumes/postgresql/data:/var/lib/postgresql/data --rm --name postgresql postgres:latest +ExecStop=/usr/bin/docker stop postgresql + +[Install] +WantedBy=multi-user.target diff --git a/provision/site.yml b/provision/site.yml index e1bfa23..da8209d 100644 --- a/provision/site.yml +++ b/provision/site.yml @@ -6,8 +6,4 @@ roles: - common - postgresql - -- name: Device Repair Provisioning - hosts: vagrant - roles: - vagrant