Ansibleを使用して、Proxmox VEをDebian Stretchにインストールします

この仮想化システムの大ファンなので、少し異なるインストール方法を共有することにしました。



要するに、ProxmoxはLXCコンテナーを引き続き処理できるKVM仮想化システムです。 クラスタリングの可能性もあります(非商用バージョンの場合、制限は約8ノードです)。 Ceph、ZFSと連携できること。 詳細については、 wikiを読むか、 YouTubeを視聴することをお勧めします。



インストールオプション



実際のところ、ProxmoxVEは、ダウンロード用に提供されているイメージを使用してインストールできますが、Linuxおよびその他の倒錯のためのソフトRAIDを使用してブレークダウンオプションを使用することはほとんどできません(パフォーマンスが重要でない場合-なぜですか?) Proxmoxを知ってくれた同志@merlin_vrnと、Ansibleを手伝ってくれたAlex Filimonovに感謝します。



Debianの現在のバージョンを希望どおりにインストールし、その後、ProxmoxVEをカーネル、linux-firmware、lvmを置き換えるアドインの一種としてインストールし、リポジトリをインストールし、Debianであることが部分的になくなるオプションがあります。 この場合、より多くの自由のためのスペースがあります(たとえば、debootstrapを使用してliveusb Archlinuxを介して最近Debianネットワークにインストールしました)。



Proxmoxのインストール手順は、 wikiで説明されています



Proxmoxのもう1つの利点は、インストール後、コントロール自体と同じWebサーバー上に、最も重要な最新のドキュメントが届くということです。 利用可能なリンクドキュメント



https://ip_or_domain/pve-docs/pve-admin-guide.html
      
      





最初、Debianの初期インストールに使用されるPreseedを使用した記事を書くことを考えましたが、考え直してから、インストールオプションが膨大になり、誰でもDebianをインストールする余裕があることに気付きました。 したがって、Debian Stretch(現時点では安定)を既にインストールしており、ネットワークが静的に構成され、sshdが機能しており、すでにssh-copy-idを介してキーを送信していると考えています。 また、Ansibleを使用した経験があると仮定します。



Ansibleを使用する



Ansibleにはansible-galaxyがあり、ニーズに合った既成の役割を見つけたり、他の人が書いた方法や内容を読んだりするのに十分簡単です。 Ansible-galaxyでは、githubアカウントを介してログインし、特定のリポジトリを既に手探りすることができます。 方法についてはこちらをご覧ください



私はロールを作成し、それを可食銀河で調べました。 次のコマンドを使用して簡単にインストールできます。



 ansible-galaxy install tenhishadow.pve_on_debian
      
      





したがって、現在このロールを使用できます。



 # ls -l /etc/ansible/roles/tenhishadow.pve_on_debian/  68 drwxr-xr-x. 2 root root 4096  16 22:46 defaults drwxr-xr-x. 2 root root 4096  16 22:46 handlers -rw-rw-r--. 1 root root 35147  16 22:45 LICENSE drwxr-xr-x. 2 root root 4096  16 22:46 meta -rw-rw-r--. 1 root root 1916  16 22:45 README.md drwxr-xr-x. 2 root root 4096  16 22:46 tasks drwxr-xr-x. 2 root root 4096  16 22:46 templates drwxr-xr-x. 2 root root 4096  16 22:46 tests drwxr-xr-x. 2 root root 4096  16 22:46 vars
      
      





Ansibleのホストファイルを作成します。これがインベントリになります。



 [proxmox_target] 192.168.102.51
      
      





これで実行できます:



 # ansible-playbook -i hosts testplaybook.yml
      
      





結果:



 PLAY [proxmox_target] * TASK [Gathering Facts] * ok: [192.168.102.51] TASK [tenhishadow.pve_on_debian : set hostname for the system] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : modify /etc/hosts] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : check standart repos] * changed: [192.168.102.51] => (item=deb http://security.debian.org/ stretch/updates main contrib non-free) changed: [192.168.102.51] => (item=deb-src http://security.debian.org/ stretch/updates main contrib non-free) changed: [192.168.102.51] => (item=deb http://mirror.yandex.ru/debian/ stretch main contrib non-free) changed: [192.168.102.51] => (item=deb-src http://mirror.yandex.ru/debian/ stretch main contrib non-free) changed: [192.168.102.51] => (item=deb http://mirror.yandex.ru/debian/ stretch-updates main contrib non-free) changed: [192.168.102.51] => (item=deb-src http://mirror.yandex.ru/debian/ stretch-updates main contrib non-free) TASK [tenhishadow.pve_on_debian : add pve repository key] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : add pve-no-subscription repo] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : update system] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : install proxmox packages] * changed: [192.168.102.51] => (item=[u'proxmox-ve', u'postfix', u'bridge-utils']) TASK [tenhishadow.pve_on_debian : remove os prober to prevent injuring VMs] * changed: [192.168.102.51] => (item=[u'os-prober']) TASK [tenhishadow.pve_on_debian : search for standard kernels] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : remove standart kernels] * changed: [192.168.102.51] => (item=[u'linux-image-4.9.0-4-amd64', u'linux-image-amd64']) TASK [tenhishadow.pve_on_debian : configure network from template] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : rebooting the server] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : waiting for server to come back] * k: [192.168.102.51 -> localhost] TASK [tenhishadow.pve_on_debian : remove enterprise repo] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : install several packages] * changed: [192.168.102.51] => (item=chrony) changed: [192.168.102.51] => (item=htop) ok: [192.168.102.51] => (item=telnet) changed: [192.168.102.51] => (item=nmap) changed: [192.168.102.51] => (item=screen) changed: [192.168.102.51] => (item=tcpdump) changed: [192.168.102.51] => (item=iptraf) changed: [192.168.102.51] => (item=sudo) ok: [192.168.102.51] => (item=bridge-utils) TASK [tenhishadow.pve_on_debian : set timezone] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : generate locales] * ok: [192.168.102.51] => (item=en_US.UTF-8) changed: [192.168.102.51] => (item=ru_RU.UTF-8) TASK [tenhishadow.pve_on_debian : configure chrony] * changed: [192.168.102.51] TASK [tenhishadow.pve_on_debian : start and enable chrony] * ok: [192.168.102.51] TASK [tenhishadow.pve_on_debian : configure journald] * changed: [192.168.102.51] RUNNING HANDLER [tenhishadow.pve_on_debian : restart networking] * changed: [192.168.102.51] RUNNING HANDLER [tenhishadow.pve_on_debian : restart chrony] * changed: [192.168.102.51] RUNNING HANDLER [tenhishadow.pve_on_debian : restart journald] * changed: [192.168.102.51] PLAY RECAP * 192.168.102.51 : ok=24 changed=21 unreachable=0 failed=0
      
      





要するに、プレイブックはwikiで説明されているのと同じことを行いますが、openiscsiをインストールしません(設定されていない場合、多くのエラーを書き込みます)。 + bridge-utilsを使用してネットワークを構成します(必要に応じて、openvswitchで簡単にオーバーライドできます)。 標準カーネルも削除され、サーバーが再起動されます。



興味深い部分から、古いカーネルを削除してサーバーを再起動する方法について少し行き詰まりましたが、dpkgとAnsibleのドキュメントを掘り下げた後、解決策を見つけました。



 - name: search for standard kernels shell: "$( which dpkg ) --get-selections linux-image* | $( which grep ) -i install | $(which awk) '{print $1}'" args: executable: /bin/bash register: standart_kernels_installed - name: remove standart kernels apt: name: "{{ item }}" state: absent with_items: "{{ standart_kernels_installed.stdout_lines|default([]) }}" - name: rebooting the server shell: nohup bash -c "sleep 2s && reboot" & async: 0 poll: 0 ignore_errors: yes register: reboot tags: reboot - name: waiting for server to come back local_action: wait_for host={{ proxmox_ip }} state=started when: reboot.changed async: 2400 poll: 10 tags: reboot
      
      





Proxmoxは独自のカーネルを提供し、非常に多くの標準プログラムをリポジトリのプログラムで置き換えているため、現在のカーネルを削除しても問題はありません(ローカルで実行すると警告が発行されます)。



プレイブックの途中のどこかで、ターゲットホストが再起動し、Ansibleはノードが再びアクティブになったときに待機し(2400秒待機して、10個の可用性を確認)、その後journaldとchronyを構成します。 次に、いくつかのユーティリティをインストールします。これで、既製のProxmoxがあなたを待っています。



All Articles