これまで、一定数の処理を必要とする計算には、ある一定のメモリが必要と考えられてきました。
そして処理量に対する必要メモリの量は、絶対に減らせないラインが存在するとされていました。その最たる例が「実際にXステップかかる計算は、X/logXのメモリで実行できる」というものです。
ところが、アメリカのMIT(マサチューセッツ工科大学)で行われた研究によって、その常識を根底から覆しかねない衝撃的な成果が報告されています。
⇧ amazing...
VirtualBoxで作成したVM同士の疎通は内部ネットワークを作成しネットワーク設定を忘れずに
ネットワーク何にも分からないマンなので、四苦八苦していたところ、職場の方に連携いただいたところ一瞬で解決できたので備忘録として。
とりあえず、
⇧ 上記サイト様の環境構築の話になります。
で、自分の読解力が無かったため、「Vagrant」を「ホストOS」側にインストールしてしまっていたので、「VirtualBox」の「仮想マシン(VM:Virtual Machine)」の「ネットワークアダプター」が3つ必要になりましたと。
自分の環境は、
No | ネットワークアダプター | 内容 |
---|---|---|
1 | NAT | インターネットと疎通できるようにする |
2 | ホストオンリーアダプター | ホストOSとゲストOSの疎通できるようにする |
3 | 内部ネットワーク | ゲストOSとゲストOSの疎通できるようにする |
⇧ と言う感じなのだが、おそらく、「Vagrant」についても「仮想マシン(VM:Virtual Machine)」にインストールしておけば、「ホストオンリーアダプター」は不要になる認識。
「VirtualBox」の公式のドキュメントによると、
⇧ 全部で、5つ用意されているっぽい。
で、「Vagrant」を「ホストOS」側(今回は、Windows環境)にインストールしてる場合の「Vagrantfile」は以下のような感じになった。
■Vagrantfile
# # Common settings for all virtual machines # Vagrant.configure("2") do |config| config.vm.provider "virtualbox" do |vb| # vb.memory = "4096" vb.memory = "1024" # vb.cpus = 1 vb.cpus = 2 vb.gui = true vb.customize [ "modifyvm", :id, "--ioapic", "on", "--graphicscontroller", "vmsvga", "--nicpromisc2", "allow-all" ] end ## ## CentOS 8 / marutamachi ## # config.vm.define :marutamachi do |marutamachi| # marutamachi.vm.box = "centos/8" # marutamachi.vm.network "private_network", mac: "00006c000101", ip: "192.168.111.101", virtualbox__intnet: true # marutamachi.vm.hostname = "marutamachi.example.jp" # marutamachi.vm.provider "virtualbox" do |vb| # vb.name = "marutamachi" # end # marutamachi.vm.provision "shell", inline: $remove_vmtools # marutamachi.vm.provision "shell", inline: $common_provisioning # marutamachi.vm.provision "shell", inline: $centos8_provisioning # end # ## ## CentOS 7 / takeyamachi ## # config.vm.define :takeyamachi do |takeyamachi| # takeyamachi.vm.box = "centos/7" # takeyamachi.vm.network "private_network", mac: "00006c000102", ip: "192.168.111.102", virtualbox__intnet: true # takeyamachi.vm.hostname = "takeyamachi.example.jp" # takeyamachi.vm.provider "virtualbox" do |vb| # vb.name = "takeyamachi" # end # takeyamachi.vm.provision "shell", inline: $remove_vmtools_yum # takeyamachi.vm.provision "shell", inline: $common_provisioning # takeyamachi.vm.provision "shell", inline: $centos7_provisioning # end # # Ubuntu 20.04 LTS / ebisugawa # config.vm.define :ebisugawa do |ebisugawa| ebisugawa.vm.box = "ubuntu/focal64" # ebisugawa.vm.network "private_network", mac: "00006c000103", ip: "192.168.111.103", virtualbox__intnet: true # ホストオンリーアダプター ebisugawa.vm.network "private_network", ip: "192.168.56.103" # 内部ネットワーク ebisugawa.vm.network "private_network", ip: "192.168.111.103", virtualbox__intnet: true ebisugawa.vm.hostname = "ebisugawa.example.jp" ebisugawa.vm.provider "virtualbox" do |vb| vb.name = "ebisugawa" end ebisugawa.vm.provision "shell", inline: $remove_vmtools_apt ebisugawa.vm.provision "shell", inline: $common_provisioning ebisugawa.vm.provision "shell", inline: $ubuntu_provisioning end # # Ubuntu 18.04 LTS / nijyo # config.vm.define :nijyo do |nijyo| nijyo.vm.box = "ubuntu/bionic64" # nijyo.vm.network "private_network", mac: "00006c000104", ip: "192.168.111.104", virtualbox__intnet: true # ホストオンリーアダプター nijyo.vm.network "private_network", ip: "192.168.56.104" # 内部ネットワーク nijyo.vm.network "private_network", ip: "192.168.111.104", virtualbox__intnet: true nijyo.vm.hostname = "nijyo.example.jp" nijyo.vm.provider "virtualbox" do |vb| vb.name = "nijyo" end nijyo.vm.provision "shell", inline: $remove_vmtools_apt nijyo.vm.provision "shell", inline: $common_provisioning nijyo.vm.provision "shell", inline: $ubuntu_provisioning end ## ## Debian 10 / oshikoji ## # config.vm.define :oshikoji do |oshikoji| # oshikoji.vm.box = "debian/buster64" # oshikoji.vm.network "private_network", mac: "00006c000105", ip: "192.168.111.105", virtualbox__intnet: true # oshikoji.vm.hostname = "oshikoji.example.jp" # oshikoji.vm.provider "virtualbox" do |vb| # vb.name = "oshikoji" # end # oshikoji.vm.provision "shell", inline: $common_provisioning # oshikoji.vm.provision "shell", inline: $set_vagrant_password # oshikoji.vm.provision "shell", inline: $debian_provisioning # end # ## ## AlmaLinux 8 / oike ## # config.vm.define :oike do |oike| # oike.vm.box = "almalinux/8" # oike.vm.network "private_network", mac: "00006c000106", ip: "192.168.111.106", virtualbox__intnet: true # oike.vm.hostname = "oike.example.jp" # oike.vm.provider "virtualbox" do |vb| # vb.name = "oike" # end # oike.vm.provision "shell", inline: $common_provisioning # oike.vm.provision "shell", inline: $centos8_provisioning # end end # # Common provisioning for all virtual machines # $common_provisioning = <<-'SCRIPT' timedatectl set-timezone Asia/Tokyo sed -e s/^'PasswordAuthentication no'/'PasswordAuthentication yes'/ /etc/ssh/sshd_config > /tmp/sshd_config mv -f /tmp/sshd_config /etc/ssh/ chmod 0600 /etc/ssh/sshd_config systemctl restart sshd.service SCRIPT # # Remove open-vm-tools # $remove_vmtools = <<-'SCRIPT' dnf -y remove open-vm-tools SCRIPT # # Remove open-vm-tools (yum command) # $remove_vmtools_yum = <<-'SCRIPT' yum -y remove open-vm-tools SCRIPT # # Remove open-vm-tools (apt command) # $remove_vmtools_apt = <<-'SCRIPT' apt -y remove open-vm-tools SCRIPT # # Set the password for the account vagrant # $set_vagrant_password = <<-'SCRIPT' echo 'vagrant' > pass.txt echo 'vagrant' >> pass.txt passwd vagrant < pass.txt SCRIPT ## ## Provisioning for CentOS8 ## #$centos8_provisioning = <<-'SCRIPT' #dnf -y update #reboot #SCRIPT # ## ## Provisioning for CentOS7 ## #$centos7_provisioning = <<-'SCRIPT' #yum -y update #reboot #SCRIPT # # Provisioning for Ubuntu # $ubuntu_provisioning = <<-'SCRIPT' apt -y update apt -y dist-upgrade reboot SCRIPT ## ## Provisioning for Debian ## #$debian_provisioning = <<-'SCRIPT' #apt -y update #apt -y upgrade #reboot #SCRIPT
⇧ と言った感じで、ホスト側のマシンのスペックの問題もあり、参考サイト様のように潤沢なメモリを利用できないので、「仮想マシン(VM:Virtual Machine)」は2台に制限してます。
で、これとは別に「Ansible」をインストールする用の「仮想マシン(VM:Virtual Machine)」を1台用意するので、計3台の「仮想マシン(VM:Virtual Machine)」を扱うことになりますと。
つまりは、
⇧ こういう形になりますと。
「Ctrl」の方は、「Ubuntu 20.04 LTS Desktop」なので、GUIでネットワークの設定ができるわけですと。
ちなみに、「ホストオンリーアダプター」の「IPアドレス」の範囲について、
On Linux, macOS and Solaris Oracle VM VirtualBox will only allow IP addresses in 192.168.56.0/21 range to be assigned to host-only adapters. For IPv6 only link-local addresses are allowed. If other ranges are desired, they can be enabled by creating /etc/vbox/networks.conf
and specifying allowed ranges there. For example, to allow 10.0.0.0/8 and 192.168.0.0/16 IPv4 ranges as well as 2001::/64 range put the following lines into /etc/vbox/networks.conf
:
* 10.0.0.0/8 192.168.0.0/16 * 2001::/64
Lines starting with the hash # are ignored. The following example allows any addresses, effectively disabling range control:
* 0.0.0.0/0 ::/0
If the file exists, but no ranges are specified in it, no addresses will be assigned to host-only adapters. The following example effectively disables all ranges:
# No addresses are allowed for host-only adapters
⇧「Windows」以外だと、「192.168.56.0/21」という決まりが設けられたみたいなのだが、「Windows」利用している場合は、「10.0.0.0/8」の範囲が適用されるっぽいので、「Vagrantfile」で「10.0.0.0/8」の範囲で指定すれば良かったのかもしれない...
何やら、
⇧ 6.1から適用されたらしい。
ちなみに、「ホスト」として「macOS」を利用している場合、
⇧「Host-Only Adapter」は「非推奨」になっているらしい。
「ホスト」として「Windows」を利用している場合は、
⇧ 非推奨となってはいない。
そして、公式の「VirtualBox」のドキュメントを改めて確認するも、
⇧ 数が噛み合わない...
「ネットワークアダプター」と「Networking Mode」の関係が分からない...
話が脱線しましたが、「Vagrant」で作成した「仮想マシン(VM:Virtual Machine)」が「Ansible」の「Playbook」を実行する対象になるので、パスワードでSSH接続できるようにしておく必要があるのですが、「Vagrant」特有の問題なのか「Ubuntu 20.04」以降は、「/etc/ssh/sshd_conf」の設定を変更する箇所が多くなっているので要注意。
■パスワード認証の有効化に関連する部分抜粋 /etc/ssh/sshd_config
PermitRootLogin yes PasswordAuthentication yes ChallengeResponseAuthentication yes
⇧ このあたりを設定してないと、『Permission denied(publickey)』とかのエラーが出てくるっぽい。
つまり、「公開鍵認証」で認証しようとしてしまうわけだ。
ネットの情報だと、「PasswordAuthentication yes」で「パスワード認証」が有効になるって情報が多いのだが、「Vagrant」の「Ubuntu 20.04 LTS」だからなのか、「PasswordAuthentication yes」のみだと「パスワード認証」が有効にならなかったのよね...
「sshpass」を利用したいので、「パスワード認証」を許可したかったという話。
とりあえず、ネットワークなんも分からん...
毎度モヤモヤ感が半端ない…
今回はこのへんで。