GNU/Linux >> Linux の 問題 >  >> Linux

仮想TripleOスタンドアロンOpenStackシステムのデプロイ

TripleOはOpenStack上のOpenStackの略で、公式のOpenStackデプロイメントプロジェクトの1つです。 TripleOスタンドアロンシステムをインストールすることは、概念実証、ホームラボ、またはOpenStackで学習するための環境を作成するための優れた方法です。ただし、実稼働環境にはお勧めしません。

CentOS 8でTripleOを利用して、OpenStack Victoriaリリースのスタンドアロンデプロイメントを作成するために必要な手順を説明します。次に、仮想マシン(VM)を正常に起動して接続するために必要なコンポーネントを作成します。最後に、展開をクリーンアップするためのスクリプトを作成します。

展開前の構成

ホストマシン

このシナリオでは、ホストにRHEL8.2マシンを使用しました。 FedoraまたはCentOSの場合は手順を少し調整する必要があるかもしれません。

コックピットを利用してネットワークと仮想マシンを管理するには、サービスを開始して有効にしてから、cockpit-machinesをインストールします。 パッケージ:

sudo systemctl enable --now cockpit.socket
sudo yum install -y cockpit-machines

netfilterかどうかを確認します モジュールがカーネルにロードされます:

sudo modprobe br_netfilter

IPv4 IP転送がまだロードされていない場合は、有効にします。

sudo nano /etc/sysctl.conf 
net.ipv4.ip_forward = 1

sysctl.confをリロードします 再起動せずに:

sudo sysctl -p /etc/sysctl.conf

[読者も楽しんだ:ソフトウェア定義ネットワークの使用を開始する]

ネットワーキング

始める前に、デフォルトネットワークに加えてスタンドアロンネットワークを作成します。新しいネットワークが管理ネットワークになります。以下を独自の環境に合わせて調整できます。

スタンドアロンネットワークを作成する

192.168.24.0 / 24を利用する スタンドアロンネットワークとして。まず、standalone.xmlを作成します ファイル:

sudo nano /tmp/standalone.xml 
<network>
   <name>standalone</name>
   <forward mode='nat'>
      <nat> <port start='1024' end='65535'/>
      </nat>
   </forward>
   <ip address='192.168.24.0' netmask='255.255.255.0'>
  </ip>
</network>

次に、virshを利用します 外部ネットワークを定義、有効化、および開始するには:

sudo virsh net-define /tmp/standalone.xml
sudo virsh net-autostart standalone
sudo virsh net-start standalone

スタンドアロンVMの作成

この展開ではベアメタルではなくVMを使用するため、スタンドアロン環境を展開するVMを作成する必要があります。

VMの仕様は次のとおりです。

  • CentOS 8(バリアントrhel8.2)
  • 60 GB
  • 8 RAM
  • 4つのCPU
  • スタンドアロンネットワーク

スタンドアロンVMにCentOS8をインストールするときは、インストールしないでくださいlibvirt-tools 最小限を使用します またはサーバー インストール。また、スタックを作成する必要があります ユーザー。

スタンドアロン構成

TripleOがスタンドアロンシステムとしてデプロイされると、パスワードを使用してVMにSSHで接続することはできなくなります。その準備をするには、SSHキーをスタックにコピーする必要があります ユーザー。コマンドは次のとおりです:

ssh-copy-id -i ~/.ssh/<your ssh key> stack@<standalone>

スタックを構成する必要があります NOPASSWDのユーザー sudoで :

sudo echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack

スタンドアロンマシンには、次のように設定できる完全修飾ドメイン名(FQDN)が必要です。

sudo hostnamectl set-hostname standalone.example.com
sudo hostnamectl set-hostname standalone.example.com --transient

システムを更新し、カーネルに変更があった場合は再起動します:

sudo yum update -y
sudo reboot

python-tripleo-reposをダウンロードしてインストールします https://trunk.rdoproject.org/centos8/component/tripleo/current/からのRPM

sudo yum install -y https://trunk.rdoproject.org/centos8/component/tripleo/current/python3-tripleo-repos-<version>.el8.noarch.rpm
sudo -E tripleo-repos -b victoria current
sudo yum install -y python3-tripleoclient

構成と展開

スタンドアロン構成

スタンドアロン環境をデプロイする前に、いくつかの構成ファイルを作成する必要があります。

最初のファイルはcontainers-prepare-parameters.yaml です。 ファイル。コンテナをプルするために使用されます。 TripleOクライアントを使用してベースファイルを作成します:

OpenStack tripleo container image prepare default --local-push-destination --output-env-file containers-prepare-parameters.yaml

次に、 push_destinationを更新します false と名前空間をプルする quay.ioから:

nano containers-prepare-parameters.yaml
push_destination: false
namespace: quay.io/tripleovictoria

次に、単一のNIC構成を使用してネットワーク設定を構成します。先に進む前に、スタンドアロンネットワークのインターフェースを決定する必要があります。 オンになっています。 インターフェースはまだ構成されていない可能性があるため、IPのないインターフェースになります。

ip addr

standalone_parameters.yamlの構成中にパラメーターを再利用するには 次にインストールし、次のようにパラメータをバッファにエクスポートします。

export IP=192.168.24.2
export VIP=192.168.25.2
export NETMASK=24
export GATEWAY=192.168.24.1
export INTERFACE=<interface>

次に、standalone_parameters.yamlを作成します cat:を使用してファイルする

cat <<EOF > $HOME/standalone_parameters.yaml
parameter_defaults:
  CloudName: $IP
  # default gateway
  ControlPlaneStaticRoutes:
    - ip_netmask: 0.0.0.0/0
      next_hop: $GATEWAY
      default: true
  Debug: true
  DeploymentUser: $USER
  DnsServers:
    - 1.1.1.1
    - 8.8.8.8
  # needed for vip & pacemaker
  KernelIpNonLocalBind: 1
  DockerInsecureRegistryAddress:
    - $IP:8787
  NeutronPublicInterface: $INTERFACE
  # domain name used by the host
  CloudDomain: localdomain
  NeutronDnsDomain: localdomain
  # re-use ctlplane bridge for public net, defined in the standalone
  # net config (do not change unless you know what you're doing)
  NeutronBridgeMappings: datacentre:br-ctlplane
  NeutronPhysicalBridge: br-ctlplane
  # enable to force metadata for public net
  #NeutronEnableForceMetadata: true
  StandaloneEnableRoutedNetworks: false
  StandaloneHomeDir: $HOME
  InterfaceLocalMtu: 1500
  # Needed if running in a VM, not needed if on baremetal
  NovaComputeLibvirtType: qemu
EOF

これで、次のコマンドを使用してTripleOスタンドアロン環境をデプロイする準備が整いました。

sudo openstack tripleo deploy \
  --templates \
  --local-ip=$IP/$NETMASK \
  --control-virtual-ip $VIP \
  -e /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml \
  -r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml \
  -e $HOME/containers-prepare-parameters.yaml \
  -e $HOME/standalone_parameters.yaml \
  --output-dir $HOME \
  --standalone

インストールの確認

これで、OpenStackCLIを確認できます。

export OS_CLOUD=standalone
openstack endpoint list

フレーバー、イメージ、キーペア、セキュリティグループ、ネットワーク、サーバーの作成

スタンドアロン環境をインストールして検証したので、使用する準備が整いました。 myserverという名前の小さなインスタンスを作成します 、Cirrosとこれを実現するために必要なコンポーネントを実行します。開始する前に、デプロイメントにアクセスするようにコマンドラインを構成します。

export OS_CLOUD=standalone

フレーバー

これで、小さなを構成する準備が整いました。 使用しているフレーバーを確認してから、その作成を確認してください:

openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
openstack flavor list

画像

フレーバーができたので、Cirrosイメージをダウンロードして、 Glanceを構成します。 それを使用します。作成されたことを確認します:

wget https://download.cirros-cloud.net/0.5.0/cirros-0.5.0-x86_64-disk.img
openstack image create cirros --container-format bare --disk-format qcow2 --public --file cirros-0.5.0-x86_64-disk.img
openstack image list

キーペア

パスワードを入力せずにVMに接続するには、スタンドアロンシステムで新しいSSHキーを作成し、デフォルトという名前のキーペアとしてアップロードします。 作成されていることを確認します:

ssh-keygen
openstack keypair create --public-key ~/.ssh/id_rsa.pub default
openstack keypair list

セキュリティグループ

次のタスクは、基本というセキュリティグループを作成することです。 SSHとpingを許可するルールを使用 私たちのインスタンス:

openstack security group create basic
openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
openstack security group rule create --protocol icmp basic
openstack security group rule create --protocol udp --dst-port 53:53 basic
openstack security group list
openstack security group show default

ネットワーク

ネットワークを作成する前に、スタンドアロンマシンと publicの次のパラメータをエクスポートします ネットワーク、プライベート ネットワーク、および作成するサブネット:

export GATEWAY=192.168.24.1
export STANDALONE_HOST=192.168.24.2
export PUBLIC_NETWORK_CIDR=192.168.24.0/24
export PRIVATE_NETWORK_CIDR=192.168.100.0/24
export PUBLIC_NET_START=192.168.24.4
export PUBLIC_NET_END=192.168.24.5
export DNS_SERVER=1.1.1.1

作成するパブリックネットワークは外部です データセンターを利用したネットワーク 物理ネットワーク:

openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
openstack network list

ここで、内部を作成します プライベートという名前のネットワーク private-netというサブネットを構築します :

openstack network create --internal private
openstack network list
openstack subnet create public-net --subnet-range $PUBLIC_NETWORK_CIDR --no-dhcp --gateway $GATEWAY     --allocation-pool start=$PUBLIC_NET_START,end=$PUBLIC_NET_END --network public
openstack subnet create private-net --subnet-range $PRIVATE_NETWORK_CIDR --network private
openstack subnet list

最後の手順は、 vrouterという名前のルーターを作成することです。 パブリックに接続します ネットワークだけでなく、 private-netに追加します サブネット:

openstack router create vrouter
openstack router list
openstack router set vrouter --external-gateway public
openstack router add subnet vrouter private-net
openstack router show vrouter

サーバー

これで、 myserverという名前のサーバーを作成する準備が整いました。 私たちが作成したフレーバー、画像、キーペア、プライベートネットワークを活用します:

openstack server create --flavor tiny --image cirros --key-name default --security-group basic --network private myserver

server showを利用する ステータスに焦点を当てたコマンド サーバーがアクティブであるかどうかを判断する列 またはERROR

openstack server show -c status myserver

サーバーに接続する前に、フローティングIPを作成してサーバーに追加する必要があります:

openstack floating ip create public
openstack server add floating ip myserver <IP>

インスタンスにキーペアを接続し、サーバーのセキュリティグループでSSHポートを開いたので、 cirrosとしてサーバーにSSHで接続できます。 テストするユーザー:

ssh cirros@<IP>

展開のクリーンアップ

環境をクリーンアップする必要がある場合は、スタンドアロン展開用にインストールされているサービスとファイルを削除します。これを行うには、standalone-cleanup.shというスクリプトを作成します :

cat <<EOF > $HOME/standalone-cleanup.sh
#!/bin/bash
echo "Tearing down TripleO environment"
if type pcs &> /dev/null; then
    sudo pcs cluster destroy
fi
if type podman &> /dev/null; then
    echo "Removing podman containers and images (takes times...)"
    sudo podman rm -af
    sudo podman rmi -af
fi
sudo rm -rf \
    /var/lib/tripleo-config \
    /var/lib/config-data /var/lib/container-config-scripts \
    /var/lib/container-puppet \
    /var/lib/heat-config \
    /var/lib/image-serve \
    /var/lib/containers \
    /etc/systemd/system/tripleo* \
    /var/lib/mysql/*
sudo systemctl daemon-reload
EOF

スクリプトを実行可能にします:

chmod u+x standalone-cleanup.sh

次のコマンドを使用して、クリーンアップを実行します。

./standalone-cleanup.sh

[この無料のチートシートでKubernetesの使用の基本を学びます。 ]

まとめ

TripleOは、ラボまたはデモンストレーション環境の作成に役立ちます。それを機能させるために注意しなければならないいくつかの落とし穴があります。この記事では、RHELベースの環境を使用してTripleOをデプロイ、構成、およびクリーンアップするために必要な手順について説明しました。


Linux
  1. Ubuntu14.04でのOpenStackLiberty–仮想ネットワークの作成

  2. 仮想化の概要:初心者向けの包括的なガイド

  3. UbuntuオペレーティングシステムでApache仮想ホストを設定する

  1. ゲスト OS から仮想マシンのステータスを非表示にする

  2. 仮想コンソールの Alt-Arrow 切り替えを無効にする方法は?

  3. 仮想マシンを使用した Linux モジュールの開発/テストは安全ですか?

  1. Linuxシステムが物理マシンか仮想マシンかを確認する方法

  2. OpenStack仮想マシンで2番目のプライマリまたは追加のパーティションを作成する方法

  3. Linuxシステムが物理システムまたは仮想マシンで実行されているかどうかを確認するにはどうすればよいですか?