備忘録

備忘録

Ansible を利用して .NET Core をインストールする方法

Ⅰ. はじめに

タイトルの通り「Ansible を利用して .NET Core をインストールする方法」です。

Ⅱ. やり方

1. Role をインストールする
ansible-galaxy install rkm.dotnet_core
2. インベントリを作成する

servers.ini

[servers]
10.0.0.1 ansible_user='root' ansible_password='password1'
10.0.0.2 ansible_user='root' ansible_password='password2'
3. Playbook を作成する

main.yml

- hosts: servers
  tasks:
    - name: .NET Core をインストールする
      include_role:
        name: rkm.dotnet_core
      vars:
        dotnet_package: 3.1
    - name: バージョンを取得する
      command: dotnet --version
      register: dotnet_version
    - name: バージョンを表示する
      debug:
        var: dotnet_version.stdout
実行する
ansible-playbook -i servers.ini main.yml

実行結果

$ ansible-playbook -i servers.ini main.yml
(中略)
ok: [10.0.0.1] => {
  "dotnet_version.stdout": "3.1.100"
}
ok: [10.0.0.2] => {
  "dotnet_version.stdout": "3.1.100"
}

10.0.0.1: ok=7 changed=1 ...
10.0.0.2: ok=7 changed=1 ...

Ansible インベントリの書き方

Ⅰ. はじめに

タイトルの通り「Ansible インベントリの書き方」です。

Ⅱ. 形式について

1. INI 形式
  • 内容が少ない場合はこの書き方が一番簡潔になる。
  • 変数は改行できない。スベース区切りで一行にまとめて書く。
[servers]
10.0.0.1 ansible_user='root' ansible_password='password1'
10.0.0.2 ansible_user='root' ansible_password='password2'
2. INI 形式(変数を別けて書く)
  • 変数が多くなった場合に利用する。(1では見づらい場合に利用する。)
[server001]
10.0.0.1
[server001:vars]
ansible_user='root'
ansible_password='password1'

[server002]
10.0.0.2
[server002:vars]
ansible_user='root'
ansible_password='password02'

[servers:children]
server001
server002
3. YAML 形式
  • 複雑な構造になった場合に利用する。
  • 簡単な構造の場合にYAML形式を利用すると冗長と感じる(はず)。
servers:
  children:
    server001:
      hosts:
        10.0.0.1:
      vars:
        ansible_user: root
        ansible_password: password1
    server002:
      hosts:
        10.0.0.2:
      vars:
        ansible_user: root
        ansible_password: password2

Ⅲ. インベントリの変数指定について

変数を指定する(全体)
[all:vars]
ansible_password='password'
変数を指定する(グループごとに指定)
[group:vars]
ansible_password='mypassword'
変数を指定する(個別に指定)
[group]
10.0.0.1 ansible_password='mypassword1'
10.0.0.2 ansible_password='mypassword2'

WSL1/WSL2 を再起動する方法

Ⅰ. はじめに

タイトルの通り「WSL1/WSL2 を再起動する方法」です。

WSL1/WSL2 では shutdown や reboot コマンドが実行できません。

$ sudo shutdown
Failed to connect to bus: No such file or directory
Failed to talk to init daemon.
$ sudo reboot
Failed to connect to bus: No such file or directory
Failed to talk to init daemon.

Ⅱ. やり方(全て再起動する場合)

1. コマンドプロンプトを起動する
2. 以下コマンドを実行する

wsl.exe --shutdown

3. WSL が自動的に再起動する

Ⅲ. やり方(ディストリビューションを指定する場合)

1. コマンドプロンプトを起動する
2. インストール済みの Linux ディストリビューション名を表示する

> wsl -l
Windows Subsystem for Linux ディストリビューション:
Ubuntu-16.04 (既定)

3. WSLを終了する

wsl -t Ubuntu-16.04

4. WSL が自動的に再起動する

Squid で複数IPアドレスをランダムに変化させる方法

Ⅰ. はじめに

タイトルの通り「Squid で複数IPアドレスをランダムに変化させる方法」です。

Ⅱ. やり方1

1. 以下ファイルを編集する

/etc/squid/squid.conf

# 2つのIPアドレスをランダムに利用する
acl test_random_ip random 1/2

# 3つのIPアドレスをランダムに利用する
# acl test_random_ip random 1/3

# 接続を維持しない
# ※同一ホストにアクセス時、IPアドレスが接続するたびに切り替わるようにする
server_persistent_connections off

# IPv4 の場合
tcp_outgoing_address 10.0.0.1 test_random_ip
tcp_outgoing_address 10.0.0.2 test_random_ip

# IPv6 の場合
# tcp_outgoing_address 1:2:3:4:5:6:7:8 test_random_ip
# tcp_outgoing_address 1:2:3:4:5:6:7:9 test_random_ip
2. Squid を再起動する
systemctl restart squid
実行結果

以下のようなIPアドレスチェックサービスにアクセスするたびにIPアドレスが自動的に変化します

Ⅳ. やり方3

acl NOCACHE src all
cache deny NOCACHE

never_direct allow all

cache_peer 192.168.0.100 parent 3128 0 proxy-only no-query round-robin name=1
cache_peer 192.168.0.101 parent 3128 0 proxy-only no-query round-robin name=2
cache_peer 192.168.0.102 parent 3128 0 proxy-only no-query round-robin name=3

server_persistent_connections off
# option
# client_persistent_connections off

https://stackoverflow.com/a/19219509/4771485

CentOS7/8 で IPv6 アドレスを複数追加する方法

Ⅰ. はじめに

タイトルの通り「CentOS7/8 で IPv6 アドレスを複数追加する方法」です。

Ⅱ. やり方

以下2つのIPアドレスを追加する例です。

  • 1:2:3:4:5:6:7:8
  • 1:2:3:4:5:6:7:9
1. 以下ファイルを編集する

/etc/sysconfig/network-scripts/ifcfg-eth0

# 追加するIPアドレスをスペース区切りで指定する
IPV6ADDR_SECONDARIES="1:2:3:4:5:6:7:8/128 1:2:3:4:5:6:7:9/128"
# ゲートウェイを指定する
IPV6_DEFAULTGW="1:2:3:4::1"
IPV6FORWARDING=yes
IPV6_AUTOCONF=no
2. 再起動する
systemctl restart NetworkManager.service

# 反映されない場合はシステムを再起動する
# reboot

実行結果

$ ip a | grep inet6
inet6 1:2:3:4:5:6:7:8 prefixlen 128 scopeid 0x0<global>
inet6 1:2:3:4:5:6:7:9 prefixlen 128 scopeid 0x0<global>