次回からのサーバ接続memo
- virtualboxで仮想マシンの電源ON
- vscodeでリモート接続
再起動するとIP変わるかも→変わらなかった
# wsl
ssh 192.168.40.246 # control-node
ssh 192.168.40.96 # managed-node01
ssh 192.168.40.83 # managed-node02
方針
control_nodeを1台セットアップしてから、クローンしてmanaged_nodeを作成し、ホスト名変えることにする。
そうすることでセットアップの手間が省ける
wsl2のセットアップ
すでにセットアップしてたので今回は省略する。
資料(これでセットアップはしていない)
https://tech-lab.sios.jp/archives/21023#i-2
wsl2にAnsibleのセットアップ
すでにセットアップしてたので今回は省略する。ControlNodeにする。仮想マシンでもControlNodeは作る
資料(これでセットアップはしていない)
https://tech-lab.sios.jp/archives/21023
isoファイルダウンロード
仮想マシンを作るにはisoファイルなるものが必要。
仮想マシン作成手順(ControlNode)
- ControlNode1台つくる。後でクローンする。
- 以下の手順通り行う必要がある
- ファイル→環境設定→入力→仮想マシン→ホストキーの組み合わせ→
ctrl
に変えた -
自動インストールをスキップ
のチェックを外しておく。チェックがあると作成になぜか失敗する -
Installation Source
は触ってはいけない。戻ることができない - ホスト名にアンダーバー使えない
- rootのパスワードは
root
- アカウントはユーザアカウントは
tsuyoshi
- ユーザパスワードは
root
にしておこう - ネットワーク、タイムゾーンがよく忘れる
- 再起動ボタンがあるので、押すとログインが可能になる。
コンソールログイン
tsuyoshi/root
でログインする
ip確認(ControlNode)(コンソール接続)
[tsuyoshi@rocky01 ~]$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:cf:ec:bd brd ff:ff:ff:ff:ff:ff
inet 192.168.40.7/24 brd 192.168.40.255 scope global dynamic noprefixroute enp0s3 # ここ!
valid_lft 35940sec preferred_lft 35940sec
...
[tsuyoshi@rocky01 ~]$
wslからパスワード認証でssh接続する
コンソール接続ではコピペができないので使いずらい。
ssh ip_address
パスワードroot
wslのユーザもtsuyohiなので省略。省略しない場合はssh tsuyoshi@ip_address
ssh鍵作成する(ControlNode)
cd ~/
ssh-keygen -t ed25519 -C "your_email@example.com"
chmod 600 .ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub > .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
cat ~/.ssh/id_ed25519 # wslにもっていく
- パスフレーズはなしでOK
- id_ed25519はwslにも作成する
パスワード認証をやめる(ControlNode)
sudo vi /etc/ssh/sshd_config
PasswordAuthentication no # 行は存在する.70行目ぐらい
sudo systemctl restart sshd
sudoパスワード無効化(ControlNode)
面倒なので無効にする
sudo visudo
1番下に追加
tsuyoshi ALL=NOPASSWD: ALL
yum update(ControlNode)
sudo yum update -y;sudo yum install vim git -y;sudo dnf install tree -y
python3.11導入(ControlNode)
sudo dnf install python3.11 -y
which python3
python3 --version
# python関連ファイルを検索(見るだけかな)
whereis python
# シンボリックリンクを作成
sudo ln -s /usr/bin/python3.11 /usr/bin/python
# pythonのバージョンを表示
python -V
Python 3.11.5
pipインストール(ControlNode)
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py # sudoですべきかも
pip list
実行例
[tsuyoshi@rocky01 ~]$ pip list
Package Version
---------- -------
pip 24.0
setuptools 69.1.1
wheel 0.42.0
ansibleインストール(ControlNode)
参考資料
Ansible 9.3.0 contains ansible-core version 2.16.4 が新しい
- https://github.com/ansible/ansible/blob/stable-2.9/changelogs/CHANGELOG-v2.9.rst
- https://docs.ansible.com/ansible-core/2.16/
- https://github.com/ansible-community/ansible-build-data/blob/9.3.0/9/CHANGELOG-v9.md
- https://docs.ansible.com/ansible/devel/porting_guides/porting_guide_9.html
- https://www.python.org/downloads/
- https://docs.ansible.com/ansible/2.9_ja/installation_guide/intro_installation.html#pip-ansible
yumではansibleの最新版がインストールできなかった。リポジトリにおそらくない。
pip install ansible ansible-lint # sudoをつけたいがつけるとpipがないと言われる。マニュアルにはグローバルにインストールするにはsudoをつけて--userなしでインストールと書いてあった
pip list
ansible-community --version
実行例
[tsuyoshi@rocky01 ~]$ pip list
Package Version
------------ -------
ansible 9.3.0 # 最新が入った
ansible-core 2.16.4
[tsuyoshi@rocky01 ~]$ ansible-community --version
Ansible community version 9.3.0
...
ipv6無効
sudo vim /etc/default/grub
# 以下の行を最後に追加します。
GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX ipv6.disable=1"
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grub2-mkconfig -o /boot/efi/EFI/rocky/grub2.cfg
sudo reboot
ip addr
仮想マシーンの複製
control_nodeをクローンして、managed_nodeを2台作る
- 電源OFF
- クローン
- 名前変更
-
ip addr
でip確認してwslでssh接続
ホスト名変更
# sudo hostnamectl set-hostname control-node
sudo hostnamectl set-hostname managed-node01
sudo hostnamectl set-hostname managed-node02
uname -n
- ssh入りなおすだけでいい?
- このあと電源OFFー>ON
- 全台リブートしないと、DNSが反映されてない気がする
- control-nodeからpingしてみる。名前解決ができることを確認する。もしかすると時間がかかる
ping managed-node01
ping managed-node02
ssh managed-node01
ssh managed-node02
ansibleのコードのひな型作成(ControlNode)
mkdir -p ~/ansible_test/roles
cd ~/ansible_test/roles
ansible-galaxy init test_role
実行例
[tsuyoshi@rocky01 ansible_test]$ tree test_role/
test_role/
├── README.md
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
テスト用playbook作成(ControlNode)
vi ~/ansible_test/playbook.yml
---
- name: deploy test
remote_user: tsuyoshi
hosts: all
# hosts: localhost
gather_facts: no
become: true
tasks:
- name: Perform ping
ansible.builtin.ping:
- name: exec test_role
ansible.builtin.include_role:
name: test_role
# roles:
# - role: test_role
# tags: common
# - role: mattermost
# tags: mattermost
テスト用role作成(ControlNode)
main.yml作成
vi ~/ansible_test/roles/test_role/tasks/main.yml
---
- name: Copy file from local to remote
ansible.builtin.copy:
src: files/hello.txt
dest: /tmp/hello.txt
owner: root
group: root
mode: "0644"
hello.txt作成
vi ~/ansible_test/roles/test_role/files/hello.txt
hello
inventory作成(ControlNode)
mkdir -p ~/ansible_test/inventories
vi ~/ansible_test/inventories/dev
---
all:
hosts:
192.168.40.135:
children:
web:
hosts:
192.168.40.135:
# db:
# hosts:
# 172.17.0.2:
---
all:
hosts:
managed-node01:
managed-node02:
children:
web:
hosts:
managed-node01:
db:
hosts:
managed-node02:
ansible-lint
# 検出
cd ~/
ansible-lint ~/ansible_test/
# エラーになるので消しておく
rm -v ~/ansible_test/roles/test_role/tests/test.yml
rm -v ~/ansible_test/roles/test_role/meta/main.yml
# 自動修正
ansible-lint ~/ansible_test/ --fix
疎通確認(ControlNode)
cd ~/ansible_test
ansible localhost -m ping
ansible all -i ~/ansible_test/inventories/dev -m ping
playbookを試す(ControlNode)
cd ~/ansible_test
ansible-playbook -i ~/ansible_test/inventories/dev ~/ansible_test/playbook.yml
# sudoパスワードを無効化してないときは--ask-become-passが必要です
# ansible-playbook -i ~/ansible_test/inventories/dev playbook.yml --ask-become-pass
- Managedに/tmp/hello.txtがあればOK
あとは自由に開発しましょう(ControlNode)
main.ymlにコードを追加すればOK
cd ~/ansible_test
vi ~/ansible_test/roles/test_role/tasks/tasks/main.yml
実行方法は
cd ~/ansible_test
ansible-playbook -i ~/ansible_test/inventories/dev playbook.yml
vscodeを使う(vscodeでControlNodeにアクセス)
タイムゾーン変更(ControlNode/ManagedNode)
初期構築時に設定忘れたら実行する
勝手に電源OFFになる
なんでだろう?