execute tasks as user mastodon

This commit is contained in:
rene
2022-03-18 17:01:33 +01:00
parent 7427614056
commit 1fafdad7a3
3 changed files with 105 additions and 119 deletions

View File

@@ -17,9 +17,5 @@
- include_tasks: system_setup/nginx.yml - include_tasks: system_setup/nginx.yml
- include_tasks: system_setup/user.yml - include_tasks: system_setup/user.yml
- include_tasks: system_setup/ruby.yml - include_tasks: system_setup/ruby.yml
become: true
become_user: "{{ mastodon_user }}"
- include_tasks: system_setup/mastodon.yml - include_tasks: system_setup/mastodon.yml
become: true
become_user: "{{ mastodon_user }}"
- include_tasks: system_setup/letsencrypt.yml - include_tasks: system_setup/letsencrypt.yml

View File

@@ -1,100 +1,86 @@
- name: Clone mastodon - block:
git: become: true
repo: "https://github.com/mastodon/mastodon.git" become_user: "{{ mastodon_user }}"
dest: "{{ mastodon_home }}/{{mastodon_path}}"
clone: true
# - name: Update to latest version - name: Clone mastodon
# shell: "git fetch; git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)" git:
# args: repo: "https://github.com/mastodon/mastodon.git"
# chdir: "{{ mastodon_home }}/{{ mastodon_path }}" dest: "{{ mastodon_home }}/{{mastodon_path}}"
clone: true
- name: Bundle install # - name: Update to latest version
shell: | # shell: "git fetch; git checkout $(git tag -l | grep -v 'rc[1-9]*$' | sort -V | tail -n 1)"
~/.rbenv/shims/bundle config set --local deployment 'true' && \ # args:
~/.rbenv/shims/bundle config set --local without 'test' && \ # chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
~/.rbenv/shims/bundle config set --local with 'development' && \
~/.rbenv/shims/bundle install -j$(getconf _NPROCESSORS_ONLN)
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
- name: Yarn install - name: Bundle install
command: yarn install --pure-lockfile shell: |
args: ~/.rbenv/shims/bundle config set --local deployment 'true' && \
chdir: "{{ mastodon_home }}/{{ mastodon_path }}" ~/.rbenv/shims/bundle config set --local without 'test' && \
~/.rbenv/shims/bundle config set --local with 'development' && \
~/.rbenv/shims/bundle install -j$(getconf _NPROCESSORS_ONLN)
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
- name: Yarn install
command: yarn install --pure-lockfile
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
- name: Media cleanup cronjob
cron:
name: "media cleanup"
minute: "15"
hour: "1"
job: '/bin/bash -c ''export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd {{ mastodon_home }}/{{ mastodon_path }} && RAILS_ENV=production ./bin/tootctl media remove'''
- stat: path={{ mastodon_home }}/{{ mastodon_path }}/.env.production
register: production_config
- name: Migrate database
shell: "RAILS_ENV=production ~/.rbenv/shims/bundle exec rails db:migrate"
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
when: production_config.stat.exists
- name: Precompile assets
shell: "RAILS_ENV=production ~/.rbenv/shims/bundle exec rails assets:precompile"
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
when: production_config.stat.exists
- name: Install systemd sidekiq Service Files - name: Install systemd sidekiq Service Files
template: template:
src: mastodon-sidekiq.service.j2 src: mastodon-sidekiq.service.j2
dest: /etc/systemd/system/mastodon-sidekiq.service dest: /etc/systemd/system/mastodon-sidekiq.service
become: true
become_user: root
- name: Install systemd web Service Files - name: Install systemd web Service Files
template: template:
src: mastodon-web.service.j2 src: mastodon-web.service.j2
dest: /etc/systemd/system/mastodon-web.service dest: /etc/systemd/system/mastodon-web.service
become: true
become_user: root
- name: Install systemd streaming Service Files - name: Install systemd streaming Service Files
template: template:
src: mastodon-streaming.service.j2 src: mastodon-streaming.service.j2
dest: /etc/systemd/system/mastodon-streaming.service dest: /etc/systemd/system/mastodon-streaming.service
become: true
become_user: root
- name: Media cleanup cronjob
cron:
name: "media cleanup"
minute: "15"
hour: "1"
job: '/bin/bash -c ''export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; cd {{ mastodon_home }}/{{ mastodon_path }} && RAILS_ENV=production ./bin/tootctl media remove'''
- stat: path={{ mastodon_home }}/{{ mastodon_path }}/.env.production
register: production_config
- name: Migrate database
shell: "RAILS_ENV=production ~/.rbenv/shims/bundle exec rails db:migrate"
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
when: production_config.stat.exists
- name: Precompile assets
shell: "RAILS_ENV=production ~/.rbenv/shims/bundle exec rails assets:precompile"
args:
chdir: "{{ mastodon_home }}/{{ mastodon_path }}"
when: production_config.stat.exists
- name: Enable mastodon-web - name: Enable mastodon-web
command: systemctl enable mastodon-web.service command: systemctl enable mastodon-web.service
become: true
become_user: root
- name: Enable mastodon-streaming - name: Enable mastodon-streaming
command: systemctl enable mastodon-streaming.service command: systemctl enable mastodon-streaming.service
become: true
become_user: root
- name: Enable mastodon-sidekiq - name: Enable mastodon-sidekiq
command: systemctl enable mastodon-sidekiq.service command: systemctl enable mastodon-sidekiq.service
become: true
become_user: root
- name: Restart mastodon-web - name: Restart mastodon-web
command: systemctl restart mastodon-web.service command: systemctl restart mastodon-web.service
when: production_config.stat.exists when: production_config.stat.exists
become: true
become_user: root
- name: Restart mastodon-streaming - name: Restart mastodon-streaming
command: systemctl restart mastodon-streaming.service command: systemctl restart mastodon-streaming.service
when: production_config.stat.exists when: production_config.stat.exists
become: true
become_user: root
- name: Restart mastodon-sidekiq - name: Restart mastodon-sidekiq
command: systemctl restart mastodon-sidekiq.service command: systemctl restart mastodon-sidekiq.service
when: production_config.stat.exists when: production_config.stat.exists
become: true
become_user: root

View File

@@ -1,58 +1,62 @@
--- ---
- name: mastodon | Clone rbenv - block:
git: become: true
repo: "https://github.com/rbenv/rbenv.git" become_user: "{{ mastodon_user }}"
dest: "~/.rbenv"
clone: true
version: "{{ rbenv_version }}"
- name: mastodon | Clone ruby-build - name: mastodon | Clone rbenv
git: git:
repo: "https://github.com/rbenv/ruby-build.git" repo: "https://github.com/rbenv/rbenv.git"
dest: "~/.rbenv/plugins/ruby-build" dest: "~/.rbenv"
clone: true clone: true
version: "{{ ruby_build_version }}" version: "{{ rbenv_version }}"
register: ruby_build
- name: mastodon | Configure rbenv - name: mastodon | Clone ruby-build
command: ./configure git:
args: repo: "https://github.com/rbenv/ruby-build.git"
chdir: "~/.rbenv/src" dest: "~/.rbenv/plugins/ruby-build"
register: rbenv_configure clone: true
version: "{{ ruby_build_version }}"
register: ruby_build
- name: mastodon | Build rbenv - name: mastodon | Configure rbenv
command: make command: ./configure
args: args:
chdir: "~/.rbenv/src" chdir: "~/.rbenv/src"
when: rbenv_configure is succeeded register: rbenv_configure
- name: mastodon | Update profile settings - name: mastodon | Build rbenv
blockinfile: command: make
dest: "~/.profile" args:
content: | chdir: "~/.rbenv/src"
export PATH="~/.rbenv/bin:${PATH}" when: rbenv_configure is succeeded
eval "$(rbenv init -)"
- name: mastodon | Check if the Ruby version is already installed - name: mastodon | Update profile settings
shell: "~/.rbenv/bin/rbenv versions | grep -q {{ ruby_version }}" blockinfile:
register: ruby_installed dest: "~/.profile"
ignore_errors: yes content: |
check_mode: no export PATH="~/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
- name: mastodon | Install Ruby {{ ruby_version }} - name: mastodon | Check if the Ruby version is already installed
shell: "~/.rbenv/bin/rbenv install {{ ruby_version }}" shell: "~/.rbenv/bin/rbenv versions | grep -q {{ ruby_version }}"
args: register: ruby_installed
executable: /bin/bash ignore_errors: yes
when: ruby_installed is failed check_mode: no
- name: mastodon | Set the default Ruby version to {{ ruby_version }} - name: mastodon | Install Ruby {{ ruby_version }}
shell: "~/.rbenv/bin/rbenv global {{ ruby_version }}" shell: "~/.rbenv/bin/rbenv install {{ ruby_version }}"
args: args:
executable: /bin/bash executable: /bin/bash
register: default_ruby_version when: ruby_installed is failed
- name: mastodon | Install bundler - name: mastodon | Set the default Ruby version to {{ ruby_version }}
shell: 'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; gem install bundler:{{ bundler_version }}' shell: "~/.rbenv/bin/rbenv global {{ ruby_version }}"
args: args:
executable: /bin/bash executable: /bin/bash
when: default_ruby_version is succeeded register: default_ruby_version
- name: mastodon | Install bundler
shell: 'export PATH="$HOME/.rbenv/bin:$PATH"; eval "$(rbenv init -)"; gem install bundler:{{ bundler_version }}'
args:
executable: /bin/bash
when: default_ruby_version is succeeded