Vagrant + CloudStack

From Hostnet Wiki
Jump to: navigation, search
Other languages:
latviešu



Vagrant + CloudStack

Vagrant ir rīks, kas palīdz ātri izveidot izstrādes vidi. Nepieciešams tikai izveidot šablonu ar visiem nepieciešamajiem servisiem, pēc tam jaunu CloudStack instanci varēs izveidot tikai palaižot vienu komandu un tad uz tā jau būs uzstādītas visas izstrādei nepieciešamās pakotnes.


Šablona izveide

1. Izveidojat jaunu instanci ar Jums vēlamo operētājsistēmu (OS): Instances izveidošana

2. Pieslēdzaties tai un nepieciešams izveidot lietotāju vagrant ar paroli “vagrant”:

useradd vagrant
passwd vagrant (ievadiet paroli “vagrant”)

3. Jākonfigurē SSH pieeja ar SSH atslēgu, iekš /home/vagrant/.ssh/authorized_keys ir jāievieto publiskā atslēga, kas ir šāda: ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key 4. Mapei .ssh ir jāuzstāda 0700 permisijas ar komandu chmod 0700 /home/vagrant/.ssh savukārt pašam failam jāuzstāda 0600 permisijas ar komandu chmod 0600 /home/vagrant/.ssh/authorized_keys Šīm mapēm jāpieder vagrant lietotājam, ko var nodrošināt ar komandu chown -R vagrant:vagrant /home/vagrant

5. Ieteicams arī sistēmas (root) lietotājam iestatīt paroli “vagrant” kā arī vagrant lietotāju pievienot pie sudoers, lai tam būtu pilna piekļuve, to var izdarīt, atverot failu /etc/sudoers un tajā pievienojot šo tekstu - 'vagrant ALL=(ALL) NOPASSWD: ALL'

Iekš tā paša faila nepieciešams aizkomentēt līniju, kura satur tekstu requiretty

6. Tad iekš CloudStack izveidotā VM ir jāizslēdz (Stop), pēc kā jādodas uz sadaļu Storage, jāatver šīs VM sistēmas disks un jāizveido no tā jauns šablons (template) ar pogu “Create template”. Norādat vārdu (name) un iegaumējat to, tas vēlāk būs jānorāda Vagrant konfigurācijā. Pie Description var ievadīt īsu paskaidrojumu, savukārt kā OS tips (OS type) jānorāda "Other (64-bit)". Jāieliek ķeksis pie "Password enabled", kas nozīmē ka serverim varēs caur paneli mainīt "root" paroli, ja tā tiks aizmirsta.

Create template.png

Vagrant uzstādīšana

1. Nepieciešams doties uz šo saiti<highlight> http://www.vagrantup.com/downloads .</highlight> Jāizvēlas OS un arhitektūra, jālejupielādē programmatūra un jāuzstāda tā uz datora.

2. Jāuzstāda Vagrant CloudStack spraudnis, kura apraksts ir šeit - https://github.com/schubergphilis/vagrant-cloudstack . To var izdarīt ar vienu vienkāršu komandu - vagrant plugin install vagrant-cloudstack

3. Jāiegūst nepieciešamo vagrant konfigurācijas failu un jāpievieno CloudStack “kasti” ar nosaukumu "dummy" ar komandu - vagrant box add dummy https://github.com/schubergphilis/vagrant-cloudstack/raw/master/dummy.box

4. Tālāk nepieciešams atvērt Vagrantfile galveno konfigurācijas failu, kurš, piemēram, UNIX sistēmās atrodas iekš mapes ~/.vagrant.d/boxes/dummy/0/cloudstack (Piemēra konfigurācija ir norādīta zemāk)

# -*- mode: ruby -*-

# vi: set ft=ruby :

 

Vagrant.configure("2") do |config|

    config.vm.box = "dummy"

    config.vm.provider :cloudstack do |cloudstack, override|

 

        cloudstack.static_nat = [    

        { :ipaddress => "A.A.A.A"}

        ]

        override.ssh.host = "A.A.A.A"

        # cloudstack.pf_ip_address = "A.A.A.A" 

        # cloudstack.pf_public_port = '22'

        # cloudstack.pf_private_port = '22'

        # cloudstack.pf_open_firewall = false

        cloudstack.firewall_rules = [          # Šeit tiek definēti ugunsmūra likumi, šai gadījumā tiek atvērts 22. SSH ports

               {                               # no IP adreses B.B.B.B uz serveri ar publisko IP adresi A.A.A.A

               ipaddress: "A.A.A.A",

               cidrlist: "B.B.B.B/32",

               protocol: 'tcp',

               startport: 22,

               endport: 22

               }

        ]

 

        override.ssh.private_key_path = "/home//.vagrant.d/vagrant.key"

        cloudstack.host = "mycloud.hostnet.lv"

        cloudstack.path = "/client/api"

        cloudstack.port = "443"

        cloudstack.scheme = "https"

        cloudstack.api_key = "Tava API key"

        cloudstack.secret_key = "Tava Secret key"

 

        cloudstack.template_name = "Tava izveidotā šablona nosaukums"

        cloudstack.service_offering_name = "Izvēlētā offering nosaukums" # Piemēram, Hostnet Cloud Server 1 vCPU, 1 GB RAM

        cloudstack.network_name = "Izveidotā tīkla nosaukums" 

        cloudstack.zone_name = "Hostnet Cloud-1"

        cloudstack.name = "Jaunās instances nosaukums"

        cloudstack.network_type = "Advanced"

        cloudstack.instance_ready_timeout = 300

        cloudstack.expunge_on_destroy = true

 

    end

end

CloudStack API un Secret atslēgu varat uzģenerēt iekš CloudStack paneļa sadaļā Accounts → uzspiežot uz konta → View Users → uzspiežot uz lietotāja → Generate Keys. Tad tās būs redzamas sadaļā “API Key” un “Secret Key” pie šī paša lietotāja.

override.ssh.private_key_path mainīgajā ir jānorāda ceļš uz privāto atslēgu, kas atrodas uz Jūsu lokālā datora, lai Vagrant varētu pieslēgties jaunizveidotajai instancei, uz kuras tika uzlikta publiskā atslēga. Privātās atslēgas saturam jābūt sekojošam:

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
+vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
-----END RSA PRIVATE KEY-----

1. Ja vēlaties serverim publisko IP, tad tā no sākuma tā ir jāiegūst (bet nav jāpiesaista nevienai VM):

  • Izvēlaties izveidoto tīklu sadaļā Network.

Pub ip1.png

  • Izvēlētā tīkla izvēlnē izvēlamies View IP Addresses.

Pub ip2.png

  • Nepieciešams pievienot papildus publisko IP adresi, to var izdarīt nospiežot Acquire New IP.

Pub ip3.png

  • Apstiprinat IP adreses pievienošanu.

Pub ip4.png

  • Jaunā IP adrese parādīsies panelī.

Pub ip5.png

2. Kad tas darīts, tad izvēlaties vai nu static NAT vai port forwarding veidu, ar kuru piesaistīt šo IP adresi. Iekš konfigurācijas faila piemēra, A.A.A.A ir IP adrese, kuru tikko ieguvāt, savukārt B.B.B.B ir IP, no kuras slēgsities klāt šai instancei. Parauga konfigurācijā ir atstāta opcija ar static NAT, savukārt ja vēlaties Port forwarding, tad jāaizkomentē tas, kas saistīts ar Static NAT un jāatkomentē tas, kas ar port forwarding. Izgriezums no konfigurācijas, kā būtu jābūt:

#cloudstack.static_nat = [    

#{ :ipaddress => "A.A.A.A"}

#]

override.ssh.host = "A.A.A.A"

cloudstack.pf_ip_address = "A.A.A.A" 

cloudstack.pf_public_port = '22'

cloudstack.pf_private_port = '22'

cloudstack.pf_open_firewall = false

3. Kad tas ir izdarīts, tad no tās pašas mapes, kur atrodas konfigurācijas fails, var palaist komandu vagrant up , lai izveidotu jauno instanci. To pēc tam var dzēst ar komandu vagrant destroy. Serverim pēc izveides var pieslēgties ar komandu vagrant ssh . Papildus informāciju par konfigurāciju un parametriem var iegūt:

1. https://github.com/schubergphilis/vagrant-cloudstack

2. https://docs.vagrantup.com/v2/

Varat veidot arī citas kastes ar citu nosaukumu analogi un citiem šabloniem, kas jau ir gatavi darbam izstrādei (piemēram, ar jau uzstādītu apache un MySQL un pārējiem nepieciešamajiem servisiem).