33 Commits

Author SHA1 Message Date
davidjumani
d949302d0f
packaging: Adding Centos8, Ubuntu 20.04, XCPNG8.1 Support (#4068)
* DB : Add support for MySQL 8

- Splits commands to create user and grant access on database, the old
statement is no longer supported by MySQL 8.x
- `NO_AUTO_CREATE_USER` is no longer supported by MySQL 8.x so remove
that from db.properties conn parameters

For mysql-server 8.x setup the following changes were added/tested to
make it work with CloudStack in /etc/mysql/mysql.conf.d/mysqld.cnf and
then restart the mysql-server process:

    server_id = 1
    sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION"
    innodb_rollback_on_timeout=1
    innodb_lock_wait_timeout=600
    max_connections=1000
    log-bin=mysql-bin
    binlog-format = 'ROW'

    default-authentication-plugin=mysql_native_password

Notice the last line above, this is to reset the old password based
authentication used by MySQL 5.x.

Developers can set empty password as follows:

    > sudo mysql -u root
    ALTER USER 'root'@'localhost' IDENTIFIED BY '';

In libvirt repository, there are two related commits

2019-08-23 13:13 Daniel P. Berrangé            ● rpm: don't enable socket activation in upgrade if --listen present
2019-08-22 14:52 Daniel P. Berrangé            ● remote: forbid the --listen arg when systemd socket activation

In libvirt.spec.in

        /bin/systemctl mask libvirtd.socket >/dev/null 2>&1 || :
        /bin/systemctl mask libvirtd-ro.socket >/dev/null 2>&1 || :
        /bin/systemctl mask libvirtd-admin.socket >/dev/null 2>&1 || :
        /bin/systemctl mask libvirtd-tls.socket >/dev/null 2>&1 || :
        /bin/systemctl mask libvirtd-tcp.socket >/dev/null 2>&1 || :

Co-authored-by: Wei Zhou <w.zhou@global.leaseweb.com>
Co-authored-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Co-authored-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2020-08-17 16:28:30 +05:30
Nicolas Vazquez
efe00aa7e0
[KVM] Rolling maintenance (#3610) 2020-03-12 16:59:46 +01:00
Rohit Yadav
f72f39cd11 Merge remote-tracking branch 'origin/4.13' 2020-01-31 15:28:34 +05:30
Wei Zhou
76fb811e08
kvm: Fix router migration issue when router has control/public nics on other physical network than guest (#3855)
In VM migration on KVM, libvirt qemu hook script will change the bridge name to bridges for guest networks. It works for user vm. However for virtual router, it has nics on control network and public network. If control/public use different physical networks than guest network, virtual router cannot be migrated.

Fixes: #2783
2020-01-31 15:14:35 +05:30
Wido den Hollander
8da0556f63 kvm/cloudstack-guest-tool: Tool to query Qemu Guest Agent (#3519)
Using this tool on a hypervisor admins can query KVM Instances running
on that hypervisor if they have the Qemu Guest Agent installed.

All System VMs have this and they can be queried.

For example:

$ cloudstack-guest-tool i-2-25-VM

This will print some information about network and filesystem status.

root@hv-138-a05-23:~# ./cloudstack-guest-tool s-11-VM --command info|jq
{
  "network": [
    {
      "ip-addresses": [
        {
          "prefix": 8,
          "ip-address": "127.0.0.1",
          "ip-address-type": "ipv4"
        }
      ],
      "name": "lo",
      "hardware-address": "00:00:00:00:00:00"
    },
    {
      "ip-addresses": [
        {
          "prefix": 16,
          "ip-address": "169.254.242.169",
          "ip-address-type": "ipv4"
        }
      ],
      "name": "eth0",
      "hardware-address": "0e:00:a9:fe:f2:a9"
    },
 ...
 ...
  "filesystem": [
    {
      "mountpoint": "/var",
      "disk": [
        {
          "bus": 0,
          "bus-type": "virtio",
          "target": 0,
          "unit": 0,
          "pci-controller": {
            "slot": 7,
            "bus": 0,
            "domain": 0,
            "function": 0
          }
        }
      ],
      "type": "ext4",
      "name": "vda6"
    },

Signed-off-by: Wido den Hollander <wido@widodh.nl>
2019-09-10 09:31:03 -07:00
Rohit Yadav
425ad495b1
kvm: fix qemu hook race condition (#3405)
This fixes the qemu hooks `mkdir` race condition which can happen when
too many VMs may launch on a KVM host executing the hooks script that
tries to `mkdir` for the custom directory. On exception (multiple scripts
trying to mkdir), the VM stops.

The custom directory need not be created if it does not exist, instead
the custom hooks should only execute when there is a custom directory.

Feature documentation:
http://docs.cloudstack.apache.org/en/4.11.2.0/adminguide/hosts.html#kvm-libvirt-hook-script-include

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2019-06-14 12:55:04 +05:30
ernjvr
13779ddd2e kvm: add support for custom KVM hook scripts (#2819)
KVM hook script include - logic to execute custom scripts & logging requirements
KVM hook script include - add logic to create custom directory if not exists & extra logging
2018-08-27 13:46:52 +05:30
Rohit Yadav
8da2462469
CLOUDSTACK-10333: Secure Live VM Migration for KVM (#2505)
This extends securing of KVM hosts to securing of libvirt on KVM
host as well for TLS enabled live VM migration. To simplify implementation
securing of host implies that both host and libvirtd processes are
secured with management server's CA plugin issued certificates.

Based on whether keystore and certificates files are available at
/etc/cloudstack/agent, the KVM agent determines whether to use TLS or
TCP based uris for live VM migration. It is also enforced that a secured
host will allow live VM migration to/from other secured host, and an
unsecured hosts will allow live VM migration to/from other unsecured
host only.

Post upgrade the KVM agent on startup will expose its security state
(secured detail is sent as true or false) to the managements server that
gets saved in host_details for the host. This host detail can be accesed
via the listHosts response, and in the UI unsecured KVM hosts will show
up with the host state of ‘unsecured’. Further, a button has been added
that allows admins to provision/renew certificates to KVM hosts and can
be used to secure any unsecured KVM host.

The `cloudstack-setup-agent` was modified to accept a new flag `-s`
which will reconfigure libvirtd with following settings:

    listen_tcp=0
    listen_tls=1
    tcp_port="16509"
    tls_port="16514"
    auth_tcp="none"
    auth_tls="none"
    key_file = "/etc/pki/libvirt/private/serverkey.pem"
    cert_file = "/etc/pki/libvirt/servercert.pem"
    ca_file = "/etc/pki/CA/cacert.pem"

For a connected KVM host agent, when the certificate are
renewed/provisioned a background task is scheduled that waits until all
of the agent tasks finish after which libvirt process is restarted and
finally the agent is restarted via AgentShell.

There are no API or DB changes.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2018-04-20 00:36:18 +05:30
Rohit Yadav
156dbf466c agent: Add logging to libvirt qemu hook (#2554)
This allows logging to the default libvirt qemu hook

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2018-04-16 13:50:48 +02:00
Aaron Brady
e9bf7512b4 Skip VXLANs when rewriting the bridge name for migrations 2016-05-17 10:15:53 +01:00
Remi Bergsma
002296ac4f Merge pull request #736 from ustcweizhou/CLOUDSTACK-8765
CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM

* pr/736:
  CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM

Signed-off-by: Remi Bergsma <github@remi.nl>
2015-08-26 11:29:25 +02:00
Remi Bergsma
778b828af0 CLOUDSTACK-8443: display the right hypervisor type 2015-08-24 15:51:13 +02:00
Wei Zhou
bb8f7c652e CLOUDSTACK-8765: fix vm migration failure due to different dev name on KVM 2015-08-24 14:28:13 +02:00
Rohit Yadav
e5d3084526 CLOUDSTACK-8339: Allow non-root users to add KVM host
This allows non-root users to add KVM hosts, the user should be an admin or
added to sudoers to execute sudo cloudstack-setup-agent.

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
Signed-off-by: Remi Bergsma <apache@remi.nl>

This closes #288

(cherry picked from commit d2b0c1a32b2d8719eafd6d4574de9a824d46d290)
Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
2015-05-25 14:36:29 +02:00
Kishan Kavala
89854de18d CLOUDSTACK-6931: Set hypervisor.type in agent.properties using cloudstack-setup -t option. Default is kvm. 2014-06-19 11:31:23 +05:30
Wei Zhou
258118efa6 CLOUDSTACK-4405: additional patch for bridge name and firewall rules issues after KVM upgrade to 4.2
There still exist two issues after Edison's commits.
(1) Migration from new hosts to old hosts failed.
The bridge name on old host is set to cloudVirBr* if network.bridge.name.schema is set to 3.0 in /etc/cloudstack/agent/agent.properties, but the actual bridge name is breth*-* after running cloudstack-agent-upgrade.
(2) all ports of vms (Basic zone, or Advanced zone with security groups) on old hosts are open, because the iptables rules are binding to device (bridge) name which is changed by cloudstack-agent-upgrade.

After this, the KVM upgrade steps :
a. Install 4.2 cloudstack agent on each kvm host
b. Run "cloudstack-agent-upgrade". This script will upgrade all the existing bridge name to new bridge name, and update related firewall rules.
c. install a libvirt hook:
    c1. mkdir /etc/libvirt/hooks
    c2. cp /usr/share/cloudstack-agent/lib/libvirtqemuhook /etc/libvirt/hooks/qemu
    c3. chmod +x /etc/libvirt/hooks/qemu
    c4. service libvirtd restart
    c5. service cloudstack-agent restart

Signed-off-by: Wei Zhou <w.zhou@leaseweb.com>
2013-09-24 09:55:00 +02:00
Edison Su
e325fb66ab CLOUDSTACK-4405: fix vm migration during the upgrade to 4.2
Signed-off-by: Wei Zhou <w.zhou@leaseweb.com>
2013-09-24 09:53:55 +02:00
Edison Su
7b4f846220 CLOUDSTACK-4405: add a tool: cloudstack-agent-upgrade to upgrade bridge name on kvm host
(cherry picked from commit 0ef6084d2c838a78eda29d258b1af98df96451b3)

Signed-off-by: Wei Zhou <w.zhou@leaseweb.com>
2013-09-24 09:53:05 +02:00
Hiroaki KAWAI
e9a6d47316 agent: fix network.bridge.type to be optional
New network.bridge.type was introduced, but for
buckward compatibility, the key should be optional.

Signed-off-by: Hiroaki KAWAI <kawai@stratosphere.co.jp>
2013-05-28 11:56:42 +09:00
Hiroaki KAWAI
a16b707250 CLOUDSTACK-2327: make cloud-setup-agent ovs aware
Ovs brcompat will be obsolete, so if network.bridge.type was
set to openvswitch, we'll use ovs command explicitly.

Signed-off-by: Hiroaki KAWAI <kawai@stratosphere.co.jp>
2013-05-27 16:30:32 +09:00
Marcus Sorensen
263b8eec14 Summary: Adding utility to make system vm maintenance easier for admins
Detail: new script called cloud-ssh replaces the long
'ssh -i /root/.ssh/id_rsa.cloud -p 3922 root@169.254.0.12'
users can now just run 'cloud-ssh 169.254.0.12'. Also adds it to deb and rpm
builds.

Signed-off-by: Marcus Sorensen <marcus@betterservers.com> 1353086232 -0700
2012-11-16 10:17:12 -07:00
Chip Childers
c979425ce3 CLOUDSTACK-46 : Removing mycloud, due to the agreed on deprecation of that feature. 2012-09-07 14:31:02 -04:00
Wido den Hollander
70ae5fed77 agent: Fix a couple of typos in cloud-setup-agent
This tool needs a lot more work though!
2012-08-08 22:31:06 +02:00
David Nalley
c15948a3ef committing Chip Childers patches fixing licensing headers
Applying to the following directories:
* api
* deamonize
* agnet
* agent-simulator
* cloud-cli
2012-06-12 12:32:58 -04:00
frank
b3478c377e Full opensource 2011-08-23 19:52:19 -07:00
Edison Su
82ab4fcde4 localstorage uuid is generated by uuidgen, other than from hostip+localstoragepath 2011-05-26 11:52:28 -04:00
Edison Su
736ed1ba69 rename cloud to cloudutils 2011-05-09 10:09:09 -04:00
Edison Su
cbf2b03e31 refactore cloud related tools 2011-05-06 19:54:52 -04:00
edison
5c73e46113 bug 7296: add kvm.public.network.device and kvm.private.network.device from UI
status 7296: resolved fixed
2010-12-04 20:01:10 -08:00
edison
d933f19d35 bug 5800: add cluster for KVM
TODO: need to make sure the host cpu is from the same vender in a cluster
2010-09-10 16:00:36 -07:00
edison
53df26daaa "Add host" for kvm:
The sequence:
1. add host in UI
2. scp setup_agent.sh to agent host, and execute it. This script receives hostip,zoneid, podid and guid, then runs "cloud-setup-agent" and "cloud-setup-console-proxy". Here, we assume that network/hostname and cloud-agent are already configed and installed.
3. Write a dummy kvm resource into the database, then wait for agent connects to server, by polling the database for every 1 minutes. If it finds the agent is in UP state in database, then return, or wait for at least 10 minutes.
2010-08-13 23:19:36 -07:00
edison
dc005b9b9c add setup_agent.sh, the first script running during add host
Make cloud-setup-agent/console-proxy in unattended mode
2010-08-11 19:31:07 -07:00
Manuel Amador (Rudd-O)
05c020e1f6 Source code committed 2010-08-11 09:13:29 -07:00