Skip to content

Instantly share code, notes, and snippets.

@arkag
Created May 11, 2017 19:56
Show Gist options
  • Select an option

  • Save arkag/5c251a0c1f99da1fa2833f37e6f30c90 to your computer and use it in GitHub Desktop.

Select an option

Save arkag/5c251a0c1f99da1fa2833f37e6f30c90 to your computer and use it in GitHub Desktop.
ERROR
(item={u'owner': u'www-data', u'path': u'/var/www/mediawiki-1.28.0/extensions/SphinxSearch/skins/images', u'group': u'www-data'}) => {
"failed": true,
"invocation": {
"module_args": {
"backup": null,
"content": null,
"delimiter": null,
"diff_peek": null,
"directory_mode": null,
"follow": true,
"force": false,
"group": "www-data",
"mode": null,
"original_basename": null,
"owner": "www-data",
"path": "/var/www/mediawiki-1.28.0/extensions/SphinxSearch/skins/images",
"recurse": false,
"regexp": null,
"remote_src": null,
"selevel": null,
"serole": null,
"setype": null,
"seuser": null,
"src": null,
"state": "directory",
"unsafe_writes": null,
"validate": null
},
"module_name": "file"
},
"item": {
"group": "www-data",
"owner": "www-data",
"path": "/var/www/mediawiki-1.28.0/extensions/SphinxSearch/skins/images"
},
"msg": "There was an issue creating /var/www/mediawiki-1.28.0/extensions/SphinxSearch as requested: [Errno 17] File exists: '/var/www/mediawiki-1.28.0/extensions/SphinxSearch'",
"path": "/var/www/mediawiki-1.28.0/extensions/SphinxSearch/skins/images",
"state": "absent"
}
PLAYBOOK
---
# only required for xenial for Math extension; once newer LTS, remove this and just install the "texvc" package from official repos
- name: add required ppas
apt_repository:
repo: ppa:legoktm/mediawiki-lts
- name: install packages needed
apt:
name: "{{ item }}"
update_cache: yes
cache_valid_time: '{{ apt_cache_time }}'
with_items:
- git
- graphviz
- imagemagick
- librsvg2-bin
- mariadb-client
- pandoc
- sphinxsearch
# required for Math module; this is a separate task because it "recommends"
# extra packages we don't want, so setting "install_recommds: no" here
- name: install texvc
apt:
name: texvc
update_cache: yes
cache_valid_time: '{{ apt_cache_time }}'
install_recommends: no
- name: Get mediawiki and extensions
get_url:
url: "{{ item.src }}"
dest: "{{ item.dest }}"
with_items:
- { src: "https://releases.wikimedia.org/mediawiki/{{ mediawikiversion }}/mediawiki-{{ mediawikihotfix }}.tar.gz", dest: "/var/cache/mediawiki-{{ mediawikihotfix }}.tar.gz" }
- { src: "https://extdist.wmflabs.org/dist/extensions/Math-{{ mediawiki_ext_version }}-1097ee7.tar.gz", dest: "/var/cache/math.tar.gz" } # active
- { src: "http://pilotfiber.dl.sourceforge.net/project/grcatbr/grcatbr/grcatbr-1.7/xyCategoryBrowser-1.7.tar.gz", dest: "/var/cache/graphicalcategorybrowser.tar.gz" } # last update years ago, unlikely to be new versions
- { src: "https://extdist.wmflabs.org/dist/extensions/CSS-REL1_26-c43a8c8.tar.gz", dest: "/var/cache/css.tar.gz" } # mostly localization changes
- { src: "https://extdist.wmflabs.org/dist/extensions/LdapAuthentication-{{ mediawiki_ext_version }}-770c89e.tar.gz", dest: "/var/cache/ldap.tar.gz" } # bugfix changes
- { src: "https://extdist.wmflabs.org/dist/extensions/Html2Wiki-{{ mediawiki_ext_version }}-a494d06.tar.gz", dest: "/var/cache/html2wiki.tar.gz" } # active changes
- { src: "https://extdist.wmflabs.org/dist/extensions/{{ ext.sphinxsearch }}.tar.gz", dest: "{{ loc.sphinxsearch }}.tar.gz" } # implement sphinx search
- { src: "http://sphinxsearch.com/files/sphinx-{{ sphinxsearch_version }}-release.tar.gz", dest: "/var/cache/sphinxbin.tar.gz" } # implement sphinx search
- { src: "http://stabilitytech.com/downloads/HTML5video.tar", dest: "/var/cache/html5.tar" }
- { src: "http://bootswatch.com/{{ bs_theme }}/variables.less", dest: "{{ www_root }}/{{ bs_theme }}-variables.less" }
- { src: "http://bootswatch.com/{{ bs_theme }}/bootswatch.less", dest: "{{ www_root }}/{{ bs_theme }}-bootswatch.less" }
- name: stat renamed directories
stat:
path: "/var/cache/{{ item.dest }}"
register: hostvars[inventory_hostname]["renamed-" ~ item.src]
with_items:
- { src: "SphinxSearch", dest: "{{ ext.sphinxsearch }}" }
- name: Extract mediawiki and extensions
unarchive:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
remote_src: yes
when: hostvars[inventory_hostname]["renamed-" ~ item.dir_name] is not defined
with_items:
- { dir_name: "", src: "/var/cache/mediawiki-{{ mediawikihotfix }}.tar.gz", dest: "/var/www", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/math.tar.gz", dest: "{{ extensions }}", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/graphicalcategorybrowser.tar.gz", dest: "{{ extensions }}", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/css.tar.gz", dest: "{{ extensions }}", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/ldap.tar.gz", dest: "{{ extensions }}", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/html2wiki.tar.gz", dest: "{{ extensions }}", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "SphinxSearch", src: "{{ loc.sphinxsearch }}.tar.gz", dest: "/var/cache", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/sphinxbin.tar.gz", dest: "/var/cache/", owner: "www-data", group: "{{ apache2_group }}" }
- { dir_name: "", src: "/var/cache/html5.tar", dest: "{{ extensions }}", owner: "www-data", group: "{{ apache2_group }}" }
- name: create symlinks
file:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
state: link
owner: "{{ item.owner }}"
group: "{{ item.group }}"
with_items:
- { src: "/var/cache/SphinxSearch", dest: "{{ extensions }}/SphinxSearch", owner: www-data, group: "{{ apache2_group }}" }
- { src: "/var/cache/sphinx-{{ sphinxsearch_version }}-release/api/sphinxapi.php", dest: "{{ extensions }}/SphinxSearch/sphinxapi.php", owner: www-data, group: "{{ apache2_group }}" }
- name: rename directories if not already renamed
command: "mv /var/cache/{{ item.src }} /var/cache/{{ item.dest }}"
when: hostvars[inventory_hostname]["renamed-" ~ item.src] is not defined
with_items:
- { src: "SphinxSearch", dest: "{{ ext.sphinxsearch }}" }
- name: Make directories
file:
follow: yes
path: "{{ item.path }}"
state: directory
owner: "{{ item.owner }}"
group: "{{ item.group }}"
with_items:
- { path: "{{ extensions }}/ApprovedRevs", owner: www-data, group: "{{ apache2_group }}" }
- { path: "{{ extensions }}/SpecialUserScore", owner: www-data, group: "{{ apache2_group }}"}
- { path: "{{ extensions }}/Widgets", owner: www-data, group: "{{ apache2_group }}"}
- { path: "{{ extensions }}/NewArticleTemplates", owner: www-data, group: "{{ apache2_group }}"}
- { path: "{{ extensions }}/SphinxSearch/skins/images", owner: www-data, group: "{{ apache2_group }}" }
- { path: "{{ extensions }}/Presort", owner: www-data, group: "{{ apache2_group }}"}
- { path: "{{ skins }}/common/images", owner: www-data, group: "{{ apache2_group }}"}
- { path: "/var/data/sphinx", owner: root, group: root}
- { path: "/var/log/sphinx", owner: root, group: root}
- { path: "/etc/sphinxsearch", owner: root, group: root}
# Note: I'm not using template here, because SphinxSearch.php changes with each update to the extension,
# so updating the extension would be harder if we templated the file.
- name: Create SphinxSearch Badge
blockinfile:
follow: yes
dest: "{{ extensions }}/SphinxSearch/SphinxSearch.php"
block: |
$wgFooterIcons['poweredby']['sphinxsearch'] = array(
'src' => "$wgScriptPath/extensions/SphinxSearch/skins/images/Powered_by_sphinx.png",
'url' => 'http://www.mediawiki.org/wiki/Extension:SphinxSearch',
'alt' => 'Search Powered by Sphinx',
);
- name: copy items
copy:
follow: yes
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
with_items:
- { src: Powered_by_sphinx.png, dest: "{{ extensions }}/SphinxSearch/skins/images/Powered_by_sphinx.png", owner: www-data, group: "{{ apache2_group }}" }
- { src: xeslogo_white.png, dest: "{{ skins }}/common/images/xeslogo_white.png", owner: www-data, group: "{{ apache2_group }}" }
- { src: favicon.ico, dest: "{{ www_root }}/favicon.ico", owner: www-data, group: "{{ apache2_group }}" }
- name: Get extensions from repositories
git:
repo: "{{ item.src }}"
dest: "{{ extensions }}/{{ item.dir }}"
version: "{{ item.ver | default('HEAD') }}"
force: "{{ item.force | default('no') }}"
with_items:
- { src: 'https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ApprovedRevs.git', dir: 'ApprovedRevs', desc: 'ApprovedRevs Extension' } # active
- { src: 'https://github.com/nicjansma/mediawiki-Extension-SpecialUserScore.git', dir: 'SpecialUserScore', ver: 'v2.1.1', desc: 'SpecialUserScore Extension' } # abandoned, unlikely to be new changes
- { src: 'https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Widgets.git', dir: 'Widgets', desc: 'Widgets Extension' } # provides bugfixes
- { src: 'https://github.com/mathiasertl/NewArticleTemplates.git', dir: 'NewArticleTemplates', desc: 'NewArticleTemplates Extension' } # active
# if we don't specify x.y.z for the skin version, a future mediawiki upgrade may fail - see #6161 comment 43
- name: load bootstrap skin
command: "{{ php_root }}/composer/bin/composer require mediawiki/chameleon-skin=1.5.0"
args:
chdir: "{{ www_root }}"
become_user: www_data
- name: change directory owner
file:
path: "{{ www_root }}"
owner: www-data
group: "{{ apache2_group }}"
state: directory
recurse: yes
- name: template files
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
owner: "{{ item.owner }}"
group: "{{ item.group }}"
with_items:
- { src: 'LocalSettings.php.j2', dest: '{{ www_root }}/LocalSettings.php', owner: www-data, group: "{{ apache2_group }}" }
- { src: 'Presort.php', dest: '{{ extensions }}/Presort/Presort.php', owner: www-data, group: "{{ apache2_group }}" }
- { src: 'sphinx.conf.j2', dest: '/etc/sphinxsearch/sphinx.conf', owner: root, group: root }
- { src: 'searchd.service.j2', dest: '/etc/systemd/system/searchd.service', owner: root, group: root }
- block:
- name: Copy database dump to server
copy:
src: "{{ db_dump_file }}"
dest: "{{ db_tmp_file }}"
changed_when: False
- name: Load database dump
mysql_db:
login_user: "{{ mysql_rooted_user }}"
login_password: "{{ mysql_rooted_password }}"
name: "{{ db_name }}"
state: import
target: "{{ db_tmp_file }}"
- name: Remove temporary database dump file
file:
path: "{{ db_tmp_file }}"
state: absent
changed_when: False
when: db_dump_file != "" and local_mysql
- name: update image hashes
command: "/usr/bin/php {{ www_root }}/maintenance/populateImageSha1.php"
become_user: www-data
ignore_errors: yes
- name: install vendor dependencies
command: "{{ php_root }}/composer/bin/composer install"
args:
chdir: "{{ item }}"
become_user: www-data
with_items:
- "{{ www_root }}"
- "{{ www_root }}/extensions/Html2Wiki"
- "{{ www_root }}/extensions/SyntaxHighlight_GeSHi"
- name: run maintenance update
command: "/usr/bin/php {{ www_root }}/maintenance/update.php"
become_user: www-data
- name: stop searchd
systemd:
name: searchd
state: stopped
enabled: yes
daemon_reload: yes
- name: run SphinxSearch Indexer
command: "/usr/bin/indexer --config /etc/sphinxsearch/sphinx.conf --all"
become_user: root
- name: start searchd
systemd:
name: searchd
state: started
enabled: yes
daemon_reload: yes
- name: create cron job for indexing
cron:
name: full sphinx search indexing
day: "*"
user: root
job: "/usr/bin/indexer --quiet --config /etc/sphinxsearch/sphinx.conf wiki_main --rotate >/dev/null 2>&1; /usr/bin/indexer --quiet --config /etc/sphinxsearch/sphinx.conf wiki_incremental --rotate >/dev/null 2>&1"
- name: create cron job for indexing
cron:
name: incremental sphinx search indexing
minute: "*/30"
user: root
job: "/usr/bin/indexer --quiet --config /etc/sphinxsearch/sphinx.conf wiki_incremental --rotate >/dev/null 2>&1"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment