Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ansible role for XOA installation or update using sources #123

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions ansible/xoa-role/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# defaults file
# The default username and password are applied, and admin for the password
xoa_install_url: https://raw.githubusercontent.com/Jarli01/xenorchestra_installer/master/xo_install.sh
xoa_install_script: xo_install.sh
xoa_update_url: https://raw.githubusercontent.com/Jarli01/xenorchestra_updater/master/xo-update.sh
xoa_update_script: xo_update.sh
git_email: ""
git_user: ""
xoa_default_user: "[email protected]"
xoa_default_password: "admin"
xoa_user: xoa
xoa_password: xoa
xcpng_servers: [{"label": "localhost", "ip": "127.0.1"}]
xcpng_user: root
xcpng_password: xcpng
22 changes: 22 additions & 0 deletions ansible/xoa-role/handlers/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
- name: reload_systemd
shell: systemctl daemon-reload
args:
warn: no

- name: cleaning_packages_metadata
shell: yum clean all && rm -rf /var/cache/yum
when: ansible_distribution == 'Red Hat Enterprise Linux' or ansible_distribution == 'XCP-ng'
args:
warn: no

- name: cleaning_packages_metadata
shell: zypper clean && rm -rf /var/cache/zypp
when: ansible_distribution == 'openSUSE Leap'
args:
warn: no

- name: cleaning_packages_metadata
shell: apt clean
when: ansible_distribution == 'Debian'
args:
warn: no
57 changes: 57 additions & 0 deletions ansible/xoa-role/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
galaxy_info:
author: your name
description: your description
company: your company (optional)

# If the issue tracker for your role is not on github, uncomment the
# next line and provide a value
# issue_tracker_url: http://example.com/issue/tracker

# Some suggested licenses:
# - BSD (default)
# - MIT
# - GPLv2
# - GPLv3
# - Apache
# - CC-BY
license: license (GPLv2, CC-BY, etc)

min_ansible_version: 1.2

# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:

# Optionally specify the branch Galaxy will use when accessing the GitHub
# repo for this role. During role install, if no tags are available,
# Galaxy will use this branch. During import Galaxy will access files on
# this branch. If Travis integration is configured, only notifications for this
# branch will be accepted. Otherwise, in all cases, the repo's default branch
# (usually master) will be used.
#github_branch:

#
# platforms is a list of platforms, and each platform has a name and a list of versions.
#
# platforms:
# - name: Fedora
# versions:
# - all
# - 25
# - name: SomePlatform
# versions:
# - all
# - 1.0
# - 7
# - 99.99

galaxy_tags: []
# List tags for your role here, one per line. A tag is a keyword that describes
# and categorizes the role. Users find roles by searching for tags. Be sure to
# remove the '[]' above, if you add tags to this list.
#
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
# Maximum 20 tags per role.

dependencies: []
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
# if you add dependencies to this list.
250 changes: 250 additions & 0 deletions ansible/xoa-role/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
- name: Updating packages
shell: apt-get update -y && apt-get upgrade -y
when: ansible_distribution == 'Debian'
ignore_errors: True
args:
warn: no
notify: cleaning_packages_metadata
tags:
- install
- update

- name: Installing packages
package: name={{item}} state=present
when: ansible_distribution == 'Debian'
with_items:
- curl
- git
notify: cleaning_packages_metadata
tags:
- install
- update

- name: Check if xoa is already installed
stat:
path: /opt/xen-orchestra
register: xen_orchestra_directory
tags:
- install
- update

- name: Ensure group xoa exists
ansible.builtin.group:
name: xoa
state: present
tags:
- install
- update

- name: Check if xoa is already registered in sudoers.d
stat:
path: /etc/sudoers.d/xoa
register: xoa_sudoers_file
tags:
- install
- update

- name: Add the xoa user
ansible.builtin.user:
name: xoa
shell: /bin/bash
home: /home/xoa
comment: xen-orchestra user
uid: 1040
groups: xoa,users
append: yes
when: not xoa_sudoers_file.stat.exists
tags:
- install
- update

- name: Register xoa in sudoers.d
ansible.builtin.file:
path: /etc/sudoers.d/xoa
owner: root
group: root
mode: '0640'
when: not xoa_sudoers_file.stat.exists
tags:
- install
- update

- name: Allow xoa to have passwordless sudo
lineinfile:
dest: /etc/sudoers.d/xoa
state: present
regexp: '^%xoa'
line: '%xoa ALL=(ALL) NOPASSWD: ALL'
tags:
- install
- update

- name: Setting git user email
git_config:
name: user.email
scope: global
value: "{{git_email}}"
tags:
- install
- update

- name: Setting git user
git_config:
name: user.name
scope: global
value: "{{git_user}}"
tags:
- install
- update

- name: Download installation script
ansible.builtin.get_url:
url: "{{xoa_install_url}}"
dest: "/tmp/{{xoa_install_script}}"
mode: '0770'
when: not xen_orchestra_directory.stat.exists
tags:
- install
- update

- name: Download update script
ansible.builtin.get_url:
url: "{{xoa_update_url}}"
dest: "/home/xoa/{{xoa_update_script}}"
mode: '0770'
tags:
- install
- update

- name: Create symbolic link to
file:
src: "/home/xoa/{{xoa_update_script}}"
dest: "/etc/cron.weekly/{{xoa_update_script}}"
state: link
tags:
- install
- update

- name: Removing existing data structures
shell: "rm -R /var/lib/xo-server"
ignore_errors: False
args:
warn: no
when: not xen_orchestra_directory.stat.exists
tags:
- install

- name: Removing existing data structures
shell: "rm -R /var/lib/xo-updater"
ignore_errors: False
args:
warn: no
when: not xen_orchestra_directory.stat.exists
tags:
- install

- name: Removing existing redis data
shell: "redis-cli -n 0 FLUSHALL"
ignore_errors: False
args:
warn: no
when: not xen_orchestra_directory.stat.exists
tags:
- install

- name: Installing
shell: "/tmp/{{xoa_install_script}}"
ignore_errors: False
args:
warn: no
when: not xen_orchestra_directory.stat.exists
tags:
- install
- update

- name: Updating
shell: "/home/xoa/{{xoa_update_script}} -n stable"
ignore_errors: False
args:
warn: no
when: xen_orchestra_directory.stat.exists
tags:
- install
- update

- name: Installing xo-cli
shell: "npm install -g xo-cli"
ignore_errors: False
args:
warn: no
tags:
- add-servers
- install
- update

- name: Closing existing session using xo-cli
shell: "xo-cli --unregister"
ignore_errors: True
args:
warn: no
tags:
- add-servers
- install
- update

- name: Opening session using xo-cli
shell: "xo-cli --register --au http://127.0.0.1 {{xoa_default_user}} {{xoa_default_password}}"
ignore_errors: False
args:
warn: no
tags:
- install

- name: Adding user session using xo-cli
shell: "xo-cli user.create email='{{xoa_user}}' password='{{xoa_password}}' permission='admin'"
ignore_errors: False
args:
warn: no
tags:
- install

- name: Closing existing session using xo-cli
shell: "xo-cli --unregister"
ignore_errors: True
args:
warn: no
tags:
- add-servers
- install
- update

- name: Opening session using xo-cli
shell: "xo-cli --register --au http://127.0.0.1 {{xoa_user}} {{xoa_password}}"
ignore_errors: False
args:
warn: no
tags:
- add-servers
- install
- update

- name: Adding xcp-ng servers using xo-cli
shell: "xo-cli server.add label='{{item.label}}' host='{{item.ip}}' username={{xcpng_user}} password='{{xcpng_password}}' autoConnect=true allowUnauthorized=true"
ignore_errors: False
with_items: "{{xcpng_servers}}"
args:
warn: no
tags:
- add-servers
- install
- update

- name: Closing session using xo-cli
shell: "xo-cli --unregister"
ignore_errors: False
args:
warn: no
tags:
- add-servers
- install
- update
2 changes: 2 additions & 0 deletions ansible/xoa-role/tests/inventory
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
localhost

4 changes: 4 additions & 0 deletions ansible/xoa-role/tests/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- hosts: localhost
remote_user: root
roles:
- xoa
2 changes: 2 additions & 0 deletions ansible/xoa-role/vars/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
# vars file