こちらのページに記載した Kubernetes クラスタを RancherOS で構築する場合の設定例を記載します。
ISO ファイルをダウンロードして起動すると ros コマンドが利用できるコンソールに入ります。インストール可能なバージョン一覧はコンソール上で以下のコマンドによって確認できます。
sudo ros os list
cloud-config.yml を用意します。
hostname: myrancher
以下のようなコマンドでパスワードおよびディスク等を指定してインストールします。バージョンを指定 -i
しない場合はダウンロードした ISO と同じバージョンがインストールされます。
sudo ros install -i rancher/os:v1.4.2 -c cloud-config.yml -d /dev/sda --append 'rancher.password=mypass123'
ディスクからブートすると rancher ユーザと指定したパスワードでログインできます。SSH も可能です。
ssh rancher@192.168.56.13
cloud-config.yml で設定した内容は以下の場所に保存されています。
[rancher@myrancher ~]$ sudo ls /var/lib/rancher/conf/
cloud-config.d cloud-config.yml
これをコマンドで更新する場合は以下のようにできます。再起動すると反映されます。
sudo ros config set rancher.network.interfaces.eth1.address 192.168.56.13/24
sudo ros config set rancher.network.interfaces.eth1.dhcp false
RancherOS ではシステム用とユーザ用で docker が分かれており、それぞれ以下のコマンドで確認できます。
sudo system-docker ps
docker ps
現在の設定を YAML 形式で確認
sudo ros config export
個別に変更する場合 (再起動すると反映されます)
sudo ros config set rancher.network.dns.nameservers "['8.8.8.8','8.8.4.4']"
sudo ros config get rancher.network.dns.nameservers
cloud-config.yml で変更する場合 (再起動すると反映されます)
rancher:
network:
dns:
nameservers:
- 8.8.8.8
- 8.8.4.4
sudo ros config validate -i cloud-config.yml
sudo ros config merge -i cloud-config.yml
/opt/rancher/bin/start.sh
または /etc/rc.local
にコマンドを記載しておくことで、RancherOS 起動時に実行できます。
Runs /opt/rancher/bin/start.sh if it exists and is executable. Any errors are ignored.
Runs /etc/rc.local if it exists and is executable. Any errors are ignored.
https://rancher.com/docs/os/v1.x/en/installation/boot-process/built-in-system-services/#console
sudo mkdir -p /opt/rancher/bin
echo 'echo hello > /tmp/hello.txt' | sudo tee -a /opt/rancher/bin/start.sh
sudo chmod 755 /opt/rancher/bin/start.sh
cloud-config.yml で以下のように設定することもできます。
write_files:
- path: /etc/rc.local
permissions: "0755"
owner: root
content: |
#!/bin/bash
echo hello > /tmp/hello.txt
ファイルを作成せずに直接 YAML でコマンドを設定することもできます。ただし runcmd 内で docker コマンドは利用できません。/etc/rc.local
内で wait-for-docker
を利用するか、あるいは rancher.services に設定を追加する必要があります。
runcmd:
- [ touch, /tmp/test1 ]
- echo 'test' > /tmp/test2
例えば /etc/hosts
を編集したい場合は以下のようにできます。
runcmd:
- if ! grep xxx.example.com /etc/hosts; then echo '127.0.0.1 xxx.example.com' >> /etc/hosts; fi
- if ! grep yyy.example.com /etc/hosts; then echo '127.0.0.1 yyy.example.com' >> /etc/hosts; fi
sudo ros config set rancher.network.interfaces.eth1.address 192.168.56.13/24
#sudo ros config set rancher.network.interfaces.eth1.gateway 192.168.56.1
sudo ros config set rancher.network.interfaces.eth1.dhcp false
sudo ros config set rancher.network.dns.search "['mydomain.com']"
sudo ros config set rancher.network.dns.nameservers "['8.8.8.8','8.8.4.4']"
rancher.services で管理される docker コンテナを起動する際の環境変数は cloud-config.yml で設定できます。RancherOS ではコンソールもコンテナであるため、以下のようにタイムゾーンを UTC から JST に変更できます。
sudo ros config set rancher.services.console.environment.TZ 'JST-9'
コンソールからコンテナを起動する際は別途 TZ を指定する必要があります。
docker run -it --rm -e 'TZ=JST-9' nginx /bin/bash