Newer
Older
- name: Prevent changing GID of existing group.
block:
- name: Get groups.
getent:
database: group
- name: Assert that lockss group GID has not changed.
assert:
that:
"'lockss' not in ansible_facts.getent_group or
ansible_facts.getent_group.lockss[1] == lockss_gid | string"
fail_msg: GID must be corrected manually.
quiet: yes
when: lockss_gid is defined and lockss_gid is not none
- name: Add the lockss group.
group:
name: lockss
state: present
gid: "{{ lockss_gid | default(omit) }}"
- name: Prevent changing UID of existing user.
block:
- name: Get users.
getent:
database: passwd
- name: Assert that lockss user UID has not changed.
assert:
that:
"'lockss' not in ansible_facts.getent_passwd or
ansible_facts.getent_passwd.lockss[1] == lockss_uid | string"
fail_msg: UID must be corrected manually.
quiet: yes
when: lockss_uid is defined and lockss_uid is not none
- name: Add the lockss user.
user:
name: lockss
state: present
uid: "{{ lockss_uid | default(omit) }}"
shell: /sbin/nologin
home: /
create_home: false
comment: LOCKSS
- name: Add the lockss user to the docker group.
user:
name: lockss
state: present
groups: docker
append: true
- name: Configure the firewall.
include_tasks: firewall.yml
when: lockss_configure_firewall
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
- name: Check the storage driver used by Docker.
command:
cmd: docker info -f {% raw %}'{{.Driver}}'{% endraw %}
check_mode: false
changed_when: false
register: r
- name: Ensure Docker is using the OverlayFS storage driver.
assert:
that: r.stdout == "overlay2"
quiet: true
- name: Init a new swarm with default parameters.
docker_swarm:
state: present
advertise_addr: lo
- name: Install pystache (Ubuntu).
package:
name: python3-pystache=0.5.*
state: present
when: ansible_distribution == "Ubuntu"
- name: Create symlink for pystache (Ubuntu).
file:
src: /usr/bin/pystache3
dest: /usr/local/bin/pystache
owner: root
state: link
when: ansible_distribution == "Ubuntu"
- name: Install pystache (CentOS).
vars:
ansible_python_interpreter: python3
pip:
name:
- pystache>=0.5,<1.0
state: present
when: ansible_distribution == "CentOS"
- name: Install python-pkg-resources (Ubuntu).
package:
name:
- python3-pkg-resources
state: present
when: ansible_distribution == "Ubuntu"
- name: Install git.
package:
name: git
state: present
- name: Create LOCKSS source directory.
file:
path: /usr/src/lockss
state: directory
owner: lockss
mode: 0755
- name: Pull LOCKSS repository.
git:
repo: "{{ lockss_git_url }}"
dest: /usr/src/lockss
version: "{{ lockss_git_version }}"
depth: 1
- name: Install ifconfig.
package:
name: net-tools
state: present
- name: Install LOCKSS configuration.
copy:
dest: /usr/src/lockss/config/config.info
owner: lockss
mode: 0644
content: |
LOCKSS_CONFIG_VERSION=2
LOCKSS_USER=lockss
LOCKSS_HOSTNAME={{ lockss_hostname | quote }}
LOCKSS_IPADDR={{ lockss_ipaddr | quote }}
LOCKSS_EXTERNAL_IPADDR={{ lockss_external_ipaddr | quote }}
LOCKSS_ACCESS_SUBNET={{ lockss_access_subnet | quote }}
LOCKSS_MAILHUB={{ lockss_mailhub_host | default("localhost") | quote }}
LOCKSS_MAILHUB_USER={{ lockss_mailhub_user | default | quote }}
LOCKSS_MAILHUB_PASSWORD={{ lockss_mailhub_password | default | quote }}
LOCKSS_EMAIL={{ lockss_admin_email | quote }}
LOCKSS_PROPS_URL={{ lockss_props_url | quote }}
LOCKSS_PROPS_PROXY=NONE
LOCKSS_PROPS_SERVER_AUTHENTICATE_KEYSTORE=
LOCKSS_TEST_GROUP=demo
LOCKSS_DATA_DIR={{ lockss_data_dir | quote }}
LOCKSS_ADMIN_USER={{ lockss_ui_user | default("admin") | quote }}
LOCKSS_ADMIN_PASSWD=SHA-256:{{ lockss_ui_password | hash('sha256') }}
LOCKSS_DB_PASSWD=SHA-256:{{ lockss_db_password | hash('sha256') }}
LOCKSS_PROXY_PORT=24670
LOCKSS_TMPDIR=/tmp
LOCKSS_CLEAR_TMPDIR=no
- name: Shut down LOCKSS containers.
command:
cmd: scripts/shutdown-lockss
chdir: /usr/src/lockss
become: true
become_user: lockss
- name: Add Docker secret for UI password.
vars:
ansible_python_interpreter: python3
docker_secret:
name: lockss_ui_pass
state: present
data: "{{ lockss_ui_password }}"
- name: Add Docker secret for database password.
vars:
ansible_python_interpreter: python3
docker_secret:
name: lockss-postgres-pass
state: present
data: "{{ lockss_db_password }}"
- name: Create LOCKSS data directory.
state: directory
owner: lockss
mode: 0700
- name: Create LOCKSS log directory.
file:
path: /var/log/lockss
state: directory
owner: lockss
group: adm
mode: 02770
# FIXME: These are not idempotent.
# FIXME: This could probably be a handler.
- name: Build LOCKSS configuration.
command:
cmd: scripts/generate-lockss
chdir: /usr/src/lockss
# FIXME: LOCKSS's scripts are yucky. Should we care?
- name: Stop running LOCKSS containers.
command:
cmd: scripts/shutdown-lockss
chdir: /usr/src/lockss
- name: Assemble LOCKSS containers.
command:
cmd: scripts/assemble-lockss
chdir: /usr/src/lockss
- name: Deploy LOCKSS containers.
command:
cmd: scripts/deploy-lockss
chdir: /usr/src/lockss