Ansible with Xen Orchestra
-
Hi there. Author of said inventory plugin.
If you ever wish to migrate you should be able to retain most of what you did on XOA side (I'm thinking tags), but you'll have something that's more standard and require less setup as long as the XOA API is accessible to the machine running the playbook.
You can keep the groups with the composable groups in your inventory plugin configuration:
simple_config_file: plugin: community.general.xen_orchestra api_host: 192.168.1.255 user: xo password: xo_pwd validate_certs: true use_ssl: true groups: kube-master: "name_label == 'kube-master'" compose: ansible_port: 2222
-
Hey,
I'm using this plugin, and I spent a few minutes (around 30 minutes) to find the issue:
pip3 install websocket-client
Could be nice to add it in the doc/article.
Regards
-
Nice catch, let me ping @shinuza so he can fix the doc
-
@wowi42 Hi there. It's already in the documentation:
Also, you should see an error message if it's not installed.
-
Hi
Just started playing around with the xo api, do we need a specific user and port to be opened on the firewall? I opened 8443 but stil get connection refused.
h4yadm@ansible01:/opt/system/inventories/production$ ansible-inventory -i xen_orchestra.yml --list [WARNING]: * Failed to parse /opt/system/inventories/production/xen_orchestra.yml with auto plugin: [Errno 111] Connection refused [WARNING]: * Failed to parse /opt/system/inventories/production/xen_orchestra.yml with yaml plugin: Plugin configuration YAML file, not YAML inventory [WARNING]: * Failed to parse /opt/system/inventories/production/xen_orchestra.yml with ini plugin: Invalid host pattern 'plugin:' supplied, ending in ':' is not allowed, this character is reserved to provide a port. [WARNING]: Unable to parse /opt/system/inventories/production/xen_orchestra.yml as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available { "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] } }
config:
plugin: community.general.xen_orchestra api_host: 10.10.1.120 user: xo password: "pwd" validate_certs: true use_ssl: true
-
Hi,
It's hard to answer since you aren't providing any detail on your XO installation. XOA or XO from the source? If sources, how is it configured? Which port it's listening?
-
@olivierlambert XO build from source listening on port 8443
-
If you followed the doc correctly (Node version, being entirely up to date), then it should work. Maybe it's the plugin. Any feedback for others in the community?
-
-
@hostingforyou said in Ansible with Xen Orchestra:
@olivierlambert XO build from source listening on port 8443
The plug-in doesn't make any assumptions about the port.
Can you try with
api_host: "10.10.1.120:8443"
? -
@shinuza thanks, that works.
after changing to api_host: "10.10.1.120:8443"
[WARNING]: * Failed to parse /opt/system/inventories/production/xen_orchestra.yml with auto plugin: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: IP address mismatch, certificate is not valid for '10.10.1.120'. (_ssl.c:997)
setting validate_certs: false gave me the working output
looks very nice
-
This post is deleted! -
Is their a way to use the ansible plugin for creating VM's in XCP-NG?
-
@hostingforyou Hi !
The best way to create VM is with the terraform provider for Xen Orchestra
See https://xen-orchestra.com/blog/virtops1-xen-orchestra-terraform-provider/ -
@AtaxyaNetwork looks good, not sure to post issue here as its is not ansible related, but I get the following error:
$ terraform plan Planning failed. Terraform encountered an error while generating this plan. ╷ │ Error: unexpected EOF │ │ with provider["registry.terraform.io/terra-farm/xenorchestra"], │ on provider.tf line 10, in provider "xenorchestra": │ 10: provider "xenorchestra" {
$ cat provider.tf # provider.tf terraform { required_providers { xenorchestra = { source = "terra-farm/xenorchestra" version = "~> 0.9" } } } provider "xenorchestra" { username = "xo" password = "password" url = "ws://10.10.1.120:8443" insecure = true }
$ cat vm.tf data "xenorchestra_pool" "pool" { name_label = "OTA" } data "xenorchestra_template" "vm_template" { name_label = "Ubuntu-22-template" } data "xenorchestra_sr" "sr" { name_label = "Tintri-Intern-Intern01" pool_id = data.xenorchestra_pool.pool.id } data "xenorchestra_network" "network" { name_label = "LAN Private" pool_id = data.xenorchestra_pool.pool.id }
any idea how to debug?
-
Hello all,
I'm running into a persistent issue when following the blog steps.
ansible-inventory -i ./my.xen_orchestra.yaml --list [WARNING]: * Failed to parse /home/cstreb/working/ansible/my.xen_orchestra.yaml with yaml plugin: Plugin configuration YAML file, not YAML inventory [WARNING]: * Failed to parse /home/cstreb/working/ansible/my.xen_orchestra.yaml with ini plugin: Invalid host pattern 'plugin:' supplied, ending in ':' is not allowed, this character is reserved to provide a port. [WARNING]: Unable to parse /home/cstreb/working/ansible/my.xen_orchestra.yaml as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available
contents of my.xen-orchestra.yaml file is as follows
plugin: community.general.xen_orchestra api_host: 192.168.2.203 #(XOA box?) Needs :443? user: <user> password: <pass>
Other relevant details
I'm using XO from source running on a different machine then my xcp-ngThis is my first time trying ansible at all so I may have missed a key step. Any help is appreciated.
EDIT: Fixed
Because I haven't forced HTTPS on my XO from Source box I needed to tell the file to configure to http (80)
then add the following arguments to the end of my filevalidate_certs: false
use_ssl: falseit now works.
-
Thanks @Nystral for your feedback!