DevStackを「A」から「Z」にインストール、設定、起動します

DevStackの説明



DevStackの目的は、開発およびテストに必要なソースからメインのOpenStackサービスをインストールするために使用されるツールのセットを提供することです。 DevStackでは、構成とサービスの起動の例、およびコマンドラインクライアント(CLI)の使用も示して説明しています。



wiki.openstack.org/wiki/DevStack




辞書:


インスタンスは、DevStackツールを使用して作成された仮想マシンです。



インストールの準備



DevStackをインストールするには、まずルート権限を持つユーザーを作成することをお勧めします。



sudo useradd -G sudo -m -U -s /bin/bash -p stack stack
      
      





次に、新しく作成したユーザーに切り替えて、リポジトリからDevStackを起動します。



 su stack cd ~ git clone https://github.com/openstack-dev/devstack.git
      
      





Gitがまだインストールされていない場合は、コマンドでGit



 sudo apt-get install git -y
      
      





DevStackのバージョンについて少し。 執筆時点では、合計で4つの安定したリリースがダウンロードできました。





最新のものはマスターと三鷹です。 ただし、ダウンロード可能なブランチを指定しない場合、DevStackの最新バージョンがリポジトリ(HEAD)からダウンロードされ、エラーが含まれる場合があります。



設置



選択したバージョンがディスクにダウンロードされると、スタックユーザーのルートディレクトリにdevstackディレクトリが表示されます。



 stack@host:$ls devstack
      
      





新しいディレクトリに移動し、その中にlocal.confファイルを作成します。



 stack@host:$cd devstack touch local.conf
      
      





このファイルには、DevStackで作業できるようにする構成が含まれます。 すべての構成パラメーターは、[[local | localrc]]セクションで説明する必要があります。



 nano local.conf [[local|localrc]]
      
      





インストールプロセス中にパスワードを入力しないように(入力した内容を忘れないように)、使用するサービスのパスワードを設定します。



 ############################################################ # Customize the following HOST_IP based on your installation ############################################################ ADMIN_PASSWORD=admin #   Horizon & Keystone MYSQL_PASSWORD=admin RABBIT_PASSWORD=admin SERVICE_PASSWORD=admin SERVICE_TOKEN=admin
      
      





DevStackがインストールされるマシンのIPアドレスと同様に:



 HOST_IP=10.0.2.15
      
      





一般的に、DevStackは2種類のネットワークを使用します。PUBLICとPRIVATEで、それぞれ異なる種類のアドレス(それぞれフローティングと固定)を使用します。 つまり、外部ネットワークから作成されたインスタンスにアクセスするには、フローティングアドレスが使用されます。 同時に、インスタンス自体はそれについて何も知らず、すべてのトラフィックルーティングはDevStackツールを使用して実行されます。 固定アドレスは、仮想ネットワーク内で作業するために使用されます(詳細はこちら )。



そこで、まず、浮動アドレスの配布を担当するセクションを追加します。



 #PUBLIC NETWORK CONFIGURATION Q_USE_PROVIDERNET_FOR_PUBLIC=False FLOATING_RANGE=10.0.2.0/24 Q_FLOATING_ALLOCATION_POOL="start=10.0.2.150,end=10.0.2.201" PUBLIC_NETWORK_NAME=external PUBLIC_NETWORK_GATEWAY=10.0.2.1 PUBLIC_PHYSICAL_NETWORK=public # Required for l3-agent to connect to external-network-bridge PUBLIC_BRIDGE=br-ext
      
      





固定アドレスのセクション:



 #PRIVATE NETWORK CONFIGURATION NETWORK_GATEWAY=${NETWORK_GATEWAY:-15.0.0.1} FIXED_RANGE=${FIXED_RANGE:-15.0.0.0/24}
      
      





local.confファイルを保存し、DevStackを実行します。



 ./stack.sh
      
      





すべてが正しく行われた場合、結果として次の図が表示されます。



 This is your host IP address: 10.0.2.15 This is your host IPv6 address: ::1 Horizon is now available at http://10.0.2.15/dashboard Keystone is serving at http://10.0.2.15/identity/ The default users are: admin and demo The password: admin
      
      





DevStackを構成する



DevStackには、システムを広範囲にわたって表示および構成できる多数のツールが用意されています。 これで、HORIZON WEBサーバーに移動し、グラフィカルインターフェイスを使用して、目的の構成でインスタンスを起動できます。 同時に、最小限のコンテンツで1つのCirrOSオペレーティングシステムのみを起動できます。



より充実した何かを実行したい場合は、さらに微調整する必要があります。これについては以下で説明します。 DevStackを使用するには、次のコマンドを入力する必要があります。



 . openrc admin admin
      
      





ネットワーク設定


使用可能なネットワーク構成を表示するには、次を実行する必要があります。



 stack@host:~/devstack$ nova secgroup-list +----+---------+-------------+ | Id | Name | Description | +----+---------+-------------+ | 1 | default | default | +----+---------+-------------+
      
      





Novaは仮想マシンマネージャーであり、仮想ネットワークのパフォーマンスも担当しています。 一般的に、DevStackでは、異なるサービスから同じ(または、異なる詳細レベルの)情報を取得できます。これについては、以下に示します。



この場合、1つの要素のみで構成される使用可能なグループのリストを取得しました。 将来的には、この要素を使用します。 Rallyなどの一部のツールは、デフォルトのプロファイルでのみ機能します。



各ネットワークグループは、このグループの動作を決定するルールで構成されます。 デフォルトグループに設定されているルールを確認するには、secgroup-list-rulesコマンドを入力する必要があります。



 stack@host:~/devstack$ nova secgroup-list-rules default +-------------+-----------+---------+----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+----------+--------------+ +-------------+-----------+---------+----------+--------------+
      
      





ご覧のとおり、現時点ではルールのリストは空です。 この形式では、インスタンスは外部と通信できません。 状況を修正するには、いくつかのルールを追加する必要があります。



  1. SSHアクセスルール
  2. ICMPプロトコルのルール(pingコマンドを提供)
  3. HTTP経由でインターネットトラフィックにアクセスするためのルール
  4. httpsプロトコルを介してインターネットトラフィックにアクセスするためのルール


ルールは、secgroup-add-rule <group_name> <procol_name> <port_from> <port_to>というパターンで追加されます。



 stack@host:~/devstack$ nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | tcp | 22 | 22 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ stack@host:~/devstack$ nova secgroup-add-rule default icmp -1 255 0.0.0.0/0 +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | icmp | -1 | 255 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ stack@host:~/devstack$ nova secgroup-add-rule default tcp 80 80 0.0.0.0/0 +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | tcp | 80 | 80 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+ stack@host:~/devstack$ nova secgroup-add-rule default tcp 443 443 0.0.0.0/0 +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | tcp | 443 | 443 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+
      
      





何が起こったのか確認してください:



 nova secgroup-list-rules default +-------------+-----------+---------+-----------+--------------+ | IP Protocol | From Port | To Port | IP Range | Source Group | +-------------+-----------+---------+-----------+--------------+ | tcp | 22 | 22 | 0.0.0.0/0 | | | icmp | -1 | 255 | 0.0.0.0/0 | | | tcp | 80 | 80 | 0.0.0.0/0 | | | tcp | 443 | 443 | 0.0.0.0/0 | | +-------------+-----------+---------+-----------+--------------+
      
      





SSHキーの作成


CirrOS以外のオペレーティングシステムを使用するには、SSH暗号化キーが必要です。 特にこれらの目的のために、DevStackは必要なすべての機能を提供します。 keypair-listコマンドを入力すると、使用可能なすべてのキーの表が表示されます。



 stack@host:~/devstack$ nova keypair-list +-------+------+-------------------------------------------------+ | Name | Type | Fingerprint | +-------+------+-------------------------------------------------+ +-------+------+-------------------------------------------------+
      
      





ssh-keygenコマンドを使用して、必要なキーを生成できます。



 $ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/stack/.ssh/id_rsa): cloud.key
      
      





キーを作成すると、現在のディレクトリにcloud.keyとcloud.key.pubの2つのファイルが表示されます。 cloud.keyファイルについては、すぐに正しい権限を設定する必要があります。



 $sudo chmod 600 cloud.key
      
      





次に、作成したキーを利用可能なリストに追加する必要があります。



 stack@host:~/devstack$ nova keypair-add --pub-key cloud.key.pub cloud stack@host:~/devstack$ nova keypair-list +-------+------+-------------------------------------------------+ | Name | Type | Fingerprint | +-------+------+-------------------------------------------------+ | cloud | ssh | 6f:a7:c2:11:f0:e9:9c:77:43:fc:61:37:b4:e5:f9:b2 | +-------+------+-------------------------------------------------+
      
      





一目でOSイメージを追加する


ここで、デフォルトのインストールで使用可能なオペレーティングシステムを確認します。 これを行うには、image-listコマンドを使用します。



 $nova image-list +--------------------------------------+---------------------------------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+---------------------------------+--------+--------+ | cc5fedc0-8331-4cfe-b2f0-27f264a81dde | cirros-0.3.4-x86_64-uec | ACTIVE | | | bc0d3c78-d48b-4b41-872d-5106e3392a3c | cirros-0.3.4-x86_64-uec-kernel | ACTIVE | | | 26bfbc17-1ea9-4a50-9075-5064a2b3d0ad | cirros-0.3.4-x86_64-uec-ramdisk | ACTIVE | | +--------------------------------------+---------------------------------+--------+--------+
      
      





前述のように、デフォルトでは、使用できるオペレーティングシステムは1つだけです。 利用可能な画像を管理するために、別の視線ツールが担当します:



 $glance image-list +--------------------------------------+---------------------------------+ | ID | Name | +--------------------------------------+---------------------------------+ | cc5fedc0-8331-4cfe-b2f0-27f264a81dde | cirros-0.3.4-x86_64-uec | | bc0d3c78-d48b-4b41-872d-5106e3392a3c | cirros-0.3.4-x86_64-uec-kernel | | 26bfbc17-1ea9-4a50-9075-5064a2b3d0ad | cirros-0.3.4-x86_64-uec-ramdisk | +--------------------------------------+---------------------------------+
      
      





ご覧のとおり、image-listコマンドの出力は、glanceとnovaの両方でほぼ同じですが、novaは追加情報を提供します。



動作するOSとしてUbuntu 15.10を使用します 。これはcloud-images.ubuntu.com/vivid/currentから取得できます。 サポートされているオペレーティングシステムの完全なリストは、 docs.openstack.org / image-guide / obtain-images.htmlにあります。 また、場合によっては(具体的にはこの場合)、作成されたインスタンスにログインするためにSSHキーが必要になる場合もあります。



最初に、ネットワークからディスクイメージをダウンロードする必要があります。



 stack@host:~/devstack$ wget https://cloud-images.ubuntu.com/vivid/current/vivid-server-cloudimg-amd64-disk1.img
      
      





次に、新しい画像をglanceサーバーにアップロードできます。



 stack@host:~/devstack$ glance image-create --name ubuntu_vivid --visibility public --container-format ami --file vivid-server-cloudimg-amd64-disk1.img --disk-format ami
      
      





nameは、nova image-listまたはglance image-listコマンドを使用して表示されるデータベース内のイメージの名前です。



インスタンスの起動


これで、最初のインスタンスを起動する準備がすべて整いました。 これを行うには、openstack server createコマンドを使用します。



 stack@host:~/devstack$ openstack server create srv1 --flavor=m1.small --image=ubuntu --key-name=cloud +--------------------------------------+-----------------------------------------------+ | Field | Value | +--------------------------------------+-----------------------------------------------+ | OS-DCF:diskConfig | MANUAL | | OS-EXT-AZ:availability_zone | | | OS-EXT-SRV-ATTR:host | None | | OS-EXT-SRV-ATTR:hypervisor_hostname | None | | OS-EXT-SRV-ATTR:instance_name | instance-00000001 | | OS-EXT-STS:power_state | NOSTATE | | OS-EXT-STS:task_state | scheduling | | OS-EXT-STS:vm_state | building | | OS-SRV-USG:launched_at | None | | OS-SRV-USG:terminated_at | None | | accessIPv4 | | | accessIPv6 | | | addresses | | | adminPass | SJZYQRUgoo3k | | config_drive | | | created | 2016-06-06T06:50:41Z | | flavor | m1.small (2) | | hostId | | | id | 706e906a-eb62-4927-afdf-e9a30b29c17f | | image | ubuntu (beb392b7-de7f-4fef-9afa-2cc5c2a38a13) | | key_name | cloud | | name | srv1 | | os-extended-volumes:volumes_attached | [] | | progress | 0 | | project_id | 7784247e5055485bb43c9f3311332d9a | | properties | | | security_groups | [{u'name': u'default'}] | | status | BUILD | | updated | 2016-06-06T06:50:41Z | | user_id | e54b731c7e1f40f4a5ad16d64be383bd | +--------------------------------------+-----------------------------------------------+
      
      





srv1は新しいインスタンスの名前、m1.smallはH / Wインスタンス構成、ubuntuはイメージの名前、cloudは内部DevStackテーブルのSSHキーペアの名前です。



なぜなら 本格的なOSを実行しようとしているため、適切なリソースを割り当てる必要があるため、m1.smallの構成は最小限です。 CirrOSを使用するインスタンスの場合、m1.tiny構成で十分です。 flavor-listコマンドを使用すると、構成の違いを確認できます。



 stack@host:~/devstack$ nova flavor-list +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public | +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+ | 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True | | 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True | | 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True | | 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True | +----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
      
      





DevStackをHEADからインストールした場合、追加の構成が利用できる場合があります。 インスタンスは、ステータスがBUILD状態からACTIVEに変化すると動作する準備ができています。



 stack@host:~/devstack$ nova list +--------------------------------------+------+--------+------------+-------------+------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+------+--------+------------+-------------+------------------+ | 706e906a-eb62-4927-afdf-e9a30b29c17f | srv1 | ACTIVE | - | Running | private=15.0.0.2 | +--------------------------------------+------+--------+------------+-------------+------------------+
      
      





ご覧のとおり、インスタンスには固定アドレス範囲のIPアドレスのみが含まれています。 ただし、すべてが正しく完了したら、pingコマンドを実行できます。



 stack@host:~/devstack$ ping 15.0.0.2 PING 15.0.0.2 (15.0.0.2) 56(84) bytes of data. 64 bytes from 15.0.0.2: icmp_seq=1 ttl=64 time=5.31 ms 64 bytes from 15.0.0.2: icmp_seq=2 ttl=64 time=0.470 ms 64 bytes from 15.0.0.2: icmp_seq=3 ttl=64 time=0.409 ms
      
      





そして、ユーザー名としてubuntuを使用してSSH経由でログインしてみてください(理由- ここに書かれています ):



 stack@host:~/devstack$ ssh ubuntu@15.0.0.2 The authenticity of host '15.0.0.2 (15.0.0.2)' can't be established. ED25519 key fingerprint is 0e:56:2d:b0:d7:5f:27:bc:cd:39:ff:85:e6:84:a4:ef. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '15.0.0.2' (ED25519) to the list of known hosts. Permission denied (publickey).
      
      





キーの作成を確認すると、アクセス拒否が発生します。 インスタンスを作成するときに--key-nameパラメーターを指定しないと、同じことが起こります。 インスタンスに到達するために、前に作成したキーを使用します。



 stack@host:~/devstack$ ssh -i cloud.key ubuntu@15.0.0.2 Welcome to Ubuntu 15.04 (GNU/Linux 4.2.0-36-generic x86_64) … ubuntu@srv1:~$ pwd /home/ubuntu
      
      





フローティングIPの追加


次のように、現在利用可能なすべてのフローティングアドレスを確認できます。



 stack@host:~/devstack$ nova floating-ip-list +----+----+-----------+----------+------+ | Id | IP | Server Id | Fixed IP | Pool | +----+----+-----------+----------+------+ +----+----+-----------+----------+------+
      
      





予想どおり、空です。 いくつかのアドレスを作成します。



 stack@astarove-VirtualBox:~/devstack$ nova floating-ip-create +----+----------+-----------+----------+----------+ | Id | IP | Server Id | Fixed IP | Pool | +----+----------+-----------+----------+----------+ | 1 | 10.0.2.1 | - | - | external | +----+----------+-----------+----------+----------+ stack@host:~/devstack$ nova floating-ip-create +----+----------+-----------+----------+----------+ | Id | IP | Server Id | Fixed IP | Pool | +----+----------+-----------+----------+----------+ | 2 | 10.0.2.2 | - | - | external | +----+----------+-----------+----------+----------+ stack@host:~/devstack$ nova floating-ip-list +----+----------+-----------+----------+----------+ | Id | IP | Server Id | Fixed IP | Pool | +----+----------+-----------+----------+----------+ | 1 | 10.0.2.1 | - | - | external | | 2 | 10.0.2.2 | - | - | external | +----+----------+-----------+----------+----------+
      
      





そして、これらのアドレスのいずれかをサーバーに追加します。



 stack@host:~/devstack$ nova add-floating-ip srv1 10.0.2.1 stack@host:~/devstack$ nova list +--------------------------------------+------+--------+------------+-------------+----------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+------+--------+------------+-------------+----------------------------+ | 706e906a-eb62-4927-afdf-e9a30b29c17f | srv1 | ACTIVE | - | Running | private=15.0.0.2, 10.0.2.1 | +--------------------------------------+------+--------+------------+-------------+----------------------------+
      
      





ご覧のとおり、srv1インスタンスには追加のアドレスがあり、pingおよびsshコマンドも実行できます(新しいIPの場合、新しいキーを作成する必要があります)。



 stack@host:~/devstack$ ping 10.0.2.1 PING 10.0.2.1 (10.0.2.1) 56(84) bytes of data. 64 bytes from 10.0.2.1: icmp_seq=1 ttl=64 time=1.86 ms 64 bytes from 10.0.2.1: icmp_seq=2 ttl=64 time=0.410 ms ^C --- 10.0.2.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.410/1.136/1.863/0.727 ms stack@host:~/devstack$ ssh -i cloud.key ubuntu@10.0.2.1 The authenticity of host '10.0.2.1 (10.0.2.1)' can't be established. ED25519 key fingerprint is 0e:56:2d:b0:d7:5f:27:bc:cd:39:ff:85:e6:84:a4:ef. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.0.2.1' (ED25519) to the list of known hosts. … ubuntu@srv1:~$
      
      





インスタンスからfloating-ipを削除するには、remove-floating-ipコマンドを実行する必要があります(IP自体は使用可能なフローティングアドレスのリストに残ります)。



 stack@host:~/devstack$ nova remove-floating-ip srv1 10.0.2.1 stack@host:~/devstack$ nova list +--------------------------------------+------+--------+------------+-------------+------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+------+--------+------------+-------------+------------------+ | 706e906a-eb62-4927-afdf-e9a30b29c17f | srv1 | ACTIVE | - | Running | private=15.0.0.2 | +--------------------------------------+------+--------+------------+-------------+------------------+
      
      





おわりに



この記事では、DevStack仮想化パッケージを使用して仮想マシン(インスタンス)をインストール、構成、および起動するプロセスについて詳しく説明しています。 CLIからDevStackを操作するときに使用される主なコマンドが考慮されました。 この記事で説明されているほとんどすべての手順は、neutronと呼ばれるグラフィカルインターフェイスを使用して実行できることは言うまでもない。 コメントと幸運をありがとう!



ご注意



システムの再起動後にDevStackを再起動します。 最初に、前のセッションに関連するすべてを削除します。



 stack@host:~/devstack$ ./unstack.sh stack@host:~/devstack$ ./clean.sh
      
      





通常は削除されないものを含む:



 stack@host:~/devstack$ sudo rm -rf /opt/stack/*
      
      





次に、DevStackを再起動します。



 stack@host:~/devstack$ ./stack.sh
      
      





考えられる問題


症状


sudoからコマンドを実行しようとすると、次のメッセージが表示されます。

sudo:ホストを解決できません


可能な解決策


コマンドを実行します:



 cat /etc/hostname
      
      





結果を最初の行の/ etc / hostsファイルにコピーします。



 nano /etc/hosts
      
      





保存したキーを削除する


症状


 stack@host:~/devstack$ ssh -i cloud.key ubuntu@15.0.0.3 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ED25519 key sent by the remote host is c9:8e:70:27:1d:3b:c8:9c:b3:db:df:c2:a4:07:92:a1. Please contact your system administrator. Add correct host key in /home/stack/.ssh/known_hosts to get rid of this message. Offending ED25519 key in /home/stack/.ssh/known_hosts:2 remove with: ssh-keygen -f "/home/stack/.ssh/known_hosts" -R 15.0.0.3 ED25519 host key for 15.0.0.3 has changed and you have requested strict checking. Host key verification failed.
      
      





可能な解決策


オプションとして、ファイル/home/stack/.ssh/known_hostsを削除します。



 stack@host:~/devstack$ sudo rm /home/stack/.ssh/known_hosts
      
      






All Articles