Ubuntu に Chef をインストールする方法を学びましょう…
Chef は Ruby をベースとした構成管理ツールです。これは、クラスター内のすべてのノードにわたる構成の管理を自動化し、一貫性を維持するために使用されます。 Chef には 3 つの主要なコンポーネントがあります。
- シェフサーバー
- ワークステーション
- ノード
すべての構成はワークステーションから管理され、後でシェフサーバーにプッシュされます。 Chef サーバーは、すべてのインフラストラクチャ構成を集中的に保存します。 Knife は、Chef Server と対話するために使用されるワークステーション上に存在するコマンドライン ツールです。ノードは、シェフ サーバーから構成情報を要求するシェフ クライアントを実行します。
一般的な Chef アーキテクチャは次のようになります。
それでは、シェフ サーバー、ワークステーション、ノード (シェフ クライアント) をセットアップしましょう。
環境の詳細
3 つの Ubuntu 18.04 システムを使用しています。 1 つはシェフ サーバーとして機能し、次のシステムはワークステーションとして機能し、3 番目のシステムはノードになります。
シェフサーバー
- ホスト名: シェフ-オタクフレア
- IPアドレス: 192.168.0.107
ワークステーション
- ホスト名: ワークステーション
- IPアドレス: 192.168.0.108
ノード
- ホスト名: クライアントノード
- IPアドレス: 192.168.0.109
インストールを開始する前に、すべてのシステムが相互に解決できるように、すべてのシステムの
/etc/hosts
ファイルを編集する必要があります。以下に示すように、すべてのシステムで
/etc/hosts
ファイルを編集します。
@chef-:~$
127.0.0.1 localhost
127.0.1.1
192.168.0.107 chef-
192.168.0.108 chef-workstation
192.168.0.109 client-node
3 つのシステムすべてで以下のコマンドを実行して更新します。
@chef-:~$ sudo apt update
[sudo] password for :
Hit:1 http://security.ubuntu.com/ubuntu cosmic-security InRelease
Get:2 https://download.docker.com/linux/ubuntu bionic InRelease [64.4 kB]
Hit:3 http://ppa.launchpad.net/ansible/ansible/ubuntu cosmic InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu cosmic InRelease
Get:5 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages [9,594 B]
Hit:6 http://us.archive.ubuntu.com/ubuntu cosmic-updates InRelease
Hit:7 http://us.archive.ubuntu.com/ubuntu cosmic-backports InRelease
Get:8 http://apt.puppetlabs.com bionic InRelease [85.3 kB]
Get:9 http://apt.puppetlabs.com bionic/puppet6 amd64 Packages [32.4 kB]
Fetched 192 kB in 2s (84.6 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
233 packages can be upgraded. Run 'apt list --upgradable' to see them.
Chef サーバーのインストール
Chef Server は、ワークステーションとノードを接続するアーキテクチャ内のコンポーネントです。ワークステーション上で設定が編集/変更されると、設定はシェフサーバーにプッシュされ、すべてのノードがこれらの設定変更をシェフサーバーからプルします。
次に、以下のコマンドを実行して、chef-server パッケージをダウンロードしましょう。
@chef-:~$ wget https://packages.chef.io/files/stable/chef-server/13.0.17/ubuntu/18.04/chef-server-core_13.0.17-1_amd64.deb
--2019-10-23 04:04:35-- https://packages.chef.io/files/stable/chef-server/13.0.17/ubuntu/18.04/chef-server-core_13.0.17-1_amd64.deb
Saving to: ‘chef-server-core_13.0.17-1_amd64.deb’
chef-server-core_13 100%[===================>] 240.58M 1.33MB/s in 6m 16s
2019-10-23 04:10:51 (656 KB/s) - ‘chef-server-core_13.0.17-1_amd64.deb’ saved [252269838/252269838]
次に、次のコマンドを実行してシェフ サーバーをインストールする必要があります。
@chef-:~$ sudo dpkg -i chef-server-core_*.deb
chef-server-ctl
は Chef-server のコマンドライン ユーティリティです。このユーティリティを使用して、chef-server サービスを開始します。
@chef-:~$ sudo chef-server-ctl reconfigure
Running handlers:
Running handlers complete
Chef Infra Client finished, 481/1028 resources updated in 04 minutes 08 seconds
Chef Server Reconfigured!
以下のコマンドを使用して、開始されたサービスのステータスを確認できます。
@chef-:~$ sudo chef-server-ctl status
run: bookshelf: (pid 2452) 822s; run: log: (pid 29553) 951s
run: nginx: (pid 2318) 826s; run: log: (pid 30216) 908s
run: oc_bifrost: (pid 2296) 827s; run: log: (pid 29240) 996s
run: oc_id: (pid 2304) 826s; run: log: (pid 29308) 979s
run: opscode-erchef: (pid 2511) 822s; run: log: (pid 29707) 946s
run: opscode-expander: (pid 2416) 822s; run: log: (pid 29412) 958s
run: opscode-solr4: (pid 2393) 824s; run: log: (pid 29358) 964s
run: postgresql: (pid 2264) 827s; run: log: (pid 28769) 1021s
run: rabbitmq: (pid 3183) 792s; run: log: (pid 30476) 902s
run: redis_lb: (pid 30011) 926s; run: log: (pid 30010) 926s
ユーザーと組織の作成
Chef サーバーはワークステーションとクライアント ノードを接続します。それらをリンクするには、秘密キーを使用して管理者とオーガナイザーを作成します。
まず、キーを保存するための .chef ディレクトリを作成します。
@chef-:~$ mkdir .chef
ここで、
chef-server-ctl
使用してユーザーを作成します。以下のコマンドでは、
chefadmin
はユーザー、Chef は名、GeekFlare は姓、
chefadmin@.com
は電子メール ID、 はパスワード、chefadmin.pen は RSA キーです。
@chef-:~$ sudo chef-server-ctl user-create chefadmin Chef GeekFlare chefadmin@.com '' --filename ~/.chef/chefadmin.pem
コマンドを実行して、シェフ サーバー上のユーザーのリストを確認してみましょう。
@chef-:~$ sudo chef-server-ctl user-list
chefadmin
pivotal
ここでは、chef-server-ctl を使用して組織を作成します。以下のコマンドでは、chef-org は組織名、 Chef Infrastructure は完全な組織名、chefadmin は作成したばかりのユーザー、chef-org.pem は RSA キーです。
@chef-:~$ sudo chef-server-ctl org-create chef-org " Chef Infrastructure" --association_user chefadmin --filename ~/.chef/chef-org.pem
コマンドを実行して、Chef サーバー上の組織のリストを確認してみましょう。
@chef-:~$ sudo chef-server-ctl org-list
chef-org
シェフサーバーを完全にインストールしました。次に、すべての構成が作成されるワークステーションをインストールしましょう。
ワークステーション
ワークステーションは、ユーザーがクックブックを作成する場所です。クックブックは、特定のタスクを実行するために作成される構成単位に他なりません。
以下のコマンドを実行して Chef ワークステーション パッケージをダウンロードしましょう。
@chef-workstation:~$ wget https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
--2019-10-23 05:37:41-- https://packages.chef.io/files/stable/chef-workstation/0.2.43/ubuntu/18.04/chef-workstation_0.2.43-1_amd64.deb
Resolving packages.chef.io (packages.chef.io)... 151.101.194.110, 151.101.130.110, 151.101.66.110, ...
Connecting to packages.chef.io (packages.chef.io)|151.101.194.110|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 129713682 (124M) [application/x-debian-package]
Saving to: ‘chef-workstation_0.2.43-1_amd64.deb’
chef-workstation_0.2.43-1_ 100%[=======================================>] 123.70M 2.37MB/s in 4m 25s
2019-10-23 05:42:18 (477 KB/s) - ‘chef-workstation_0.2.43-1_amd64.deb’ saved [129713682/129713682]
dpkg コマンドを実行して、ubuntu システムにワークステーションをインストールしましょう。
@chef-workstation:~$ sudo dpkg -i chef-workstation_*.deb
Selecting previously unselected package chef-workstation.
(Reading database ... 273360 files and directories currently installed.)
Preparing to unpack chef-workstation_0.2.43-1_amd64.deb ...
Unpacking chef-workstation (0.2.43-1) ...
Setting up chef-workstation (0.2.43-1) ...
To run the experimental Chef Workstation App, use your
platform's package manager to install these dependencies:
libgconf-2.so.4 => not found
You can then launch the App by running 'chef-workstation-app'.
The App will then be available in the system tray.
Thank you for installing Chef Workstation!
You can find some tips on getting started at https://chef.sh/
次に、コマンドを実行して、すべてのクックブックとその他のファイルを含む Chef リポジトリを作成します。
@chef-workstation:~$ chef generate repo chef-repo
Recipe: code_generator::repo
* directory[/home//chef-repo] action create
- create new directory /home//chef-repo
* template[/home//chef-repo/LICENSE] action create_if_missing
- create new file /home//chef-repo/LICENSE
- update content in file /home//chef-repo/LICENSE from none to 3c525c
(diff output suppressed by config)
* cookbook_file[/home//chef-repo/.chef-repo.txt] action create_if_missing
- create new file /home//chef-repo/.chef-repo.txt
- update content in file /home//chef-repo/.chef-repo.txt from none to 2bed28
(diff output suppressed by config)
* cookbook_file[/home//chef-repo/README.md] action create_if_missing
- create new file /home//chef-repo/README.md
- update content in file /home//chef-repo/README.md from none to 2b4f46
(diff output suppressed by config)
* cookbook_file[/home//chef-repo/chefignore] action create_if_missing
- create new file /home//chef-repo/chefignore
- update content in file /home//chef-repo/chefignore from none to 9e2ffd
(diff output suppressed by config)
* remote_directory[/home//chef-repo/cookbooks] action create_if_missing
- create new directory /home//chef-repo/cookbooks
Recipe: code_generator::repo
* cookbook_file[/home//chef-repo/cookbooks/README.md] action create_if_missing
- create new file /home//chef-repo/cookbooks/README.md
- update content in file /home//chef-repo/cookbooks/README.md from none to 54b03d
(diff output suppressed by config)
* execute[initialize-git] action run
- execute git init .
* template[/home//chef-repo/.gitignore] action create_if_missing
- create new file /home//chef-repo/.gitignore
- update content in file /home//chef-repo/.gitignore from none to 11e5ee
(diff output suppressed by config)
ここで、すべてのナイフ設定と RSA キーを保存する
/chef-repo/.chef
ディレクトリを作成します。
@chef-workstation:~$ mkdir ~/chef-repo/.chef
@chef-workstation:~$ cd chef-repo/
次に、RSA キーペアを生成しましょう。ワークステーションを認証し、シェフ サーバーにアクセスするためにこのキーを生成しています。
@chef-workstation:~/chef-repo$ ssh-keygen -b 4096
Generating public/private RSA key pair.
Enter file in which to save the key (/home//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home//.ssh/id_rsa.
Your public key has been saved in /home//.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:oK/ZyLn+AOMj97F5Z0e1K5o1bxChyKx3ms4HvK06DxI @chef-
The key's randomart image is:
+---[RSA 4096]----+
| |
| . |
| o.. . . |
| .+.. . . |
| E .o S o . |
| . +..+ . o . |
|. = +..B .o. . |
| o =.&= =oooo |
| .&OB=oo o. |
+----[SHA256]-----+
次に、キーをワークステーションからシェフサーバーにコピーします。
@chef-workstation:~/chef-repo$ sudo ssh-copy-id @192.168.0.107
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home//.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
@192.168.0.107's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '@192.168.0.107'"
and check to make sure that only the key(s) you wanted were added.
次に、.pem ファイル (chefadmin.pem および Chef-org.pem) を Chef サーバーからワークステーションにコピーします。
@chef-workstation:~/chef-repo$ scp @192.168.0.107:~/.chef/*.pem ~/chef-repo/.chef/
chefadmin.pem 100% 1674 105.1KB/s 00:00
chef-org.pem 100% 1674 103.0KB/s 00:00
.pem ファイルがワークステーションに正常にコピーされたかどうかを確認します。
@chef-workstation:~/chef-repo$ ls ~/chef-repo/.chef
chefadmin.pem chef-org.pem
バージョン管理の作成
ワークステーションで作業している間、クックブック (構成単位) で多くの変更や編集が発生するため、これらの変更を追跡するにはバージョン管理システムが必要です。それでは、ワークステーション上で Git を使用してバージョン管理システムを作成してみましょう。 Chef-repo ディレクトリ内に git リポジトリを作成します。 ユーザー名とメールアドレスを追加して git を設定します
@chef-workstation:~$ git config --global user.name
@chef-workstation:~$ git config --global user.email avi@.com
.chef ディレクトリを .gitignore ファイルに追加しましょう。
@chef-workstation:~$ echo ".chef" > ~/chef-repo/.gitignore
次に、chef-repo ディレクトリから add および commit git コマンドを実行します。
@chef-workstation:~$ cd ~/chef-repo
@chef-workstation:~/chef-repo$ git add .
@chef-workstation:~/chef-repo$ git commit -m "initial commit"
[master (root-commit) 99c8c11] initial commit
16 files changed, 359 insertions(+)
create mode 100644 .chef-repo.txt
create mode 100644 .gitignore
create mode 100644 LICENSE
create mode 100644 README.md
create mode 100644 chefignore
create mode 100644 cookbooks/README.md
create mode 100644 cookbooks/example/README.md
create mode 100644 cookbooks/example/attributes/default.rb
create mode 100644 cookbooks/example/metadata.rb
create mode 100644 cookbooks/example/recipes/default.rb
create mode 100644 data_bags/README.md
create mode 100644 data_bags/example/example_item.json
create mode 100644 environments/README.md
create mode 100644 environments/example.json
create mode 100644 roles/README.md
create mode 100644 roles/example.json
ステータスを確認してください。
@chef-workstation:~/chef-repo$ git status
On branch master
nothing to commit, working tree clean
最初のクックブックを作成する
これで WorkStation のインストールが完了し、WorkStation でクックブックの作成を開始できるようになります。 WorkStation でサンプル クックブックを生成して、正常に生成されるかどうかを確認してください。
以下のコマンドを実行してクックブックを生成します。
@chef-workstation:~$ Chef generate cookbook _cookbook
Generating cookbook _cookbook
- Ensuring correct cookbook file content
- Committing cookbook files to Git
- Ensuring delivery configuration
- Ensuring correct delivery build cookbook content
- Adding delivery configuration to feature branch
- Adding build cookbook to feature branch
- Merging delivery content feature branch to master
Your cookbook is ready. Type `cd _cookbook` to enter it.
There are several commands you can run to get started locally developing and testing your cookbook.
Type `delivery local --help` to see a full list.
Why not start by writing a test? Tests for the default recipe are stored at:
test/integration/default/default_test.rb
If you'd prefer to dive right in, the default recipe can be found at:
recipes/default.rb
Chef-repo を生成し、Chef-repo ディレクトリに移動します
@chef-workstation:~$ Chef generate app chef-repo
WARNING: The command 'chef generator app' is deprecated and will be removed from the next major release of Chef DK / Workstation (April 2019)
Recipe: code_generator::app
* directory[/home//chef-repo] action create (up to date)
* template[/home//chef-repo/.kitchen.yml] action create
- create new file /home//chef-repo/.kitchen.yml
- update content in file /home//chef-repo/.kitchen.yml from none to ceae09
(diff output suppressed by config)
* directory[/home//chef-repo/test/integration/default] action create
- create new directory /home//chef-repo/test/integration/default
* template[/home//chef-repo/test/integration/default/default_test.rb] action create_if_missing
- create new file /home//chef-repo/test/integration/default/default_test.rb
- update content in file /home//chef-repo/test/integration/default/default_test.rb from none to 0f757b
(diff output suppressed by config)
* template[/home//chef-repo/README.md] action create
- update content in file /home//chef-repo/README.md from 2b4f46 to 6401b8
(diff output suppressed by config)
* directory[/home//chef-repo/cookbooks] action create (up to date)
* directory[/home//chef-repo/cookbooks/chef-repo] action create
- create new directory /home//chef-repo/cookbooks/chef-repo
* template[/home//chef-repo/cookbooks/chef-repo/metadata.rb] action create
- create new file /home//chef-repo/cookbooks/chef-repo/metadata.rb
- update content in file /home//chef-repo/cookbooks/chef-repo/metadata.rb from none to e30be3
(diff output suppressed by config)
* cookbook_file[/home//chef-repo/cookbooks/chef-repo/chefignore] action create
- create new file /home//chef-repo/cookbooks/chef-repo/chefignore
- update content in file /home//chef-repo/cookbooks/chef-repo/chefignore from none to 9e2ffd
(diff output suppressed by config)
* cookbook_file[/home//chef-repo/cookbooks/chef-repo/Berksfile] action create
- create new file /home//chef-repo/cookbooks/chef-repo/Berksfile
- update content in file /home//chef-repo/cookbooks/chef-repo/Berksfile from none to 15e000
(diff output suppressed by config)
* directory[/home//chef-repo/cookbooks/chef-repo/recipes] action create
- create new directory /home//chef-repo/cookbooks/chef-repo/recipes
* template[/home//chef-repo/cookbooks/chef-repo/recipes/default.rb] action create
- create new file /home//chef-repo/cookbooks/chef-repo/recipes/default.rb
- update content in file /home//chef-repo/cookbooks/chef-repo/recipes/default.rb from none to f56ecb
(diff output suppressed by config)
* directory[/home//chef-repo/cookbooks/chef-repo/spec/unit/recipes] action create
- create new directory /home//chef-repo/cookbooks/chef-repo/spec/unit/recipes
* cookbook_file[/home//chef-repo/cookbooks/chef-repo/spec/spec_helper.rb] action create_if_missing
- create new file /home//chef-repo/cookbooks/chef-repo/spec/spec_helper.rb
- update content in file /home//chef-repo/cookbooks/chef-repo/spec/spec_helper.rb from none to 1f80e1
(diff output suppressed by config)
* template[/home//chef-repo/cookbooks/chef-repo/spec/unit/recipes/default_spec.rb] action create_if_missing
- create new file /home//chef-repo/cookbooks/chef-repo/spec/unit/recipes/default_spec.rb
- update content in file /home//chef-repo/cookbooks/chef-repo/spec/unit/recipes/default_spec.rb from none to 666a01
(diff output suppressed by config)
* execute[initialize-git] action run
- execute git init .
* cookbook_file[/home//chef-repo/.gitignore] action create
- update content in file /home//chef-repo/.gitignore from 25558e to edcd62
(diff output suppressed by config)
ナイフの設定
Knife は、ノード、クックブック、レシピを管理するためのコマンドライン ツールです。 Knife を設定するには、config.rb ファイルを作成し、そのファイルに以下の内容を記述します。これらがナイフの設定です。
@chef-workstation:~$ sudo gedit ~/chef-repo/.chef/config.rb
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
node_name 'chefadmin'
client_key "chefadmin.pem"
validation_client_name 'chef-org-validator'
validation_key "chef-org-validator.pem"
chef_server_url 'https://chef-/organizations/chef-org'
cache_type 'BasicFile'
cache_options( :path => "#{ENV['HOME']}/.chef/checksums" )
cookbook_path ["#{current_dir}/../cookbooks"]
ここで、chef-repo ディレクトリに移動し、SSL 証明書をコピーします。
@chef-workstation:~$ cd chef-repo
@chef-workstation:~/chef-repo$ knife ssl fetch
WARNING: Certificates from chef- will be fetched and placed in your trusted_cert
directory (/home//chef-repo/.chef/trusted_certs).
Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.
Adding certificate for chef- in /home//chef-repo/.chef/trusted_certs/chef-.crt
config.rb が正しく設定されていることを確認するには、以下のコマンドを実行します。
@chef-workstation:~/chef-repo$ knife client list
chef-org-validator
ノードをブートストラップする
ブートストラップはワークステーション マシンから実行され、シェフ クライアントをノードにインストールします。その後、ノードは、クライアント ノードのユーザーとパスワードを使用してノードをブートストラップすることにより、シェフ サーバーから構成を読み取ることができます。
ここで、IP アドレス 192.168.0.109、ユーザー名 、パスワード .org を使用してノードをブートストラップします。
@chef-workstation:~/chef-repo/.chef$ knife bootstrap 192.168.0.109 -x -P .org --node-name -client-1
Creating new client for -client-1
Creating new node for -client-1
Connecting to 192.168.0.109
192.168.0.109 -----> Installing Chef Omnibus (-v 14)
192.168.0.109 downloading https://omnitruck-direct.chef.io/chef/install.sh
192.168.0.109 to file /tmp/install.sh.9250/install.sh
192.168.0.109 trying wget...
192.168.0.109 ubuntu 18.10 x86_64
192.168.0.109 Getting information for chef stable 14 for ubuntu...
192.168.0.109 downloading https://omnitruck-direct.chef.io/stable/chef/metadata?v=14&p=ubuntu&pv=18.10&m=x86_64
192.168.0.109 to file /tmp/install.sh.9261/metadata.txt
192.168.0.109 trying wget...
192.168.0.109 sha1 534bae390bde3bd9d93bef99335f62246624f32b
192.168.0.109 sha256 94bc60b3a97ddadf77a70c7678ec77a676942c74f8152a2c70a0f5b68e22a42e
192.168.0.109 url https://packages.chef.io/files/stable/chef/14.14.25/ubuntu/18.04/chef_14.14.25-1_amd64.deb
192.168.0.109 version 14.14.25
192.168.0.109 downloaded metadata file looks valid...
192.168.0.109 downloading https://packages.chef.io/files/stable/chef/14.14.25/ubuntu/18.04/chef_14.14.25-1_amd64.deb
192.168.0.109 to file /tmp/install.sh.9261/chef_14.14.25-1_amd64.deb
192.168.0.109 trying wget...
192.168.0.109 Comparing checksum with sha256sum...
192.168.0.109 Installing chef 14
192.168.0.109 installing with dpkg...
192.168.0.109 Selecting previously unselected package chef.
(Reading database ... 204803 files and directories currently installed.)
192.168.0.109 Preparing to unpack .../chef_14.14.25-1_amd64.deb ...
192.168.0.109 Unpacking chef (14.14.25-1) ...
192.168.0.109 Setting up chef (14.14.25-1) ...
192.168.0.109 Thank you for installing Chef Infra Client! For help getting started visit https://learn.chef.io
192.168.0.109 Starting the first Chef Client run...
192.168.0.109 Starting Chef Client, version 14.14.25
192.168.0.109 resolving cookbooks for run list: []
192.168.0.109 Synchronizing Cookbooks:
192.168.0.109 Installing Cookbook Gems:
192.168.0.109 Compiling Cookbooks...
192.168.0.109 [2019-10-23T10:52:57-04:00] WARN: Node -client-1 has an empty run list.
192.168.0.109 Converging 0 resources
192.168.0.109
192.168.0.109 Running handlers:
192.168.0.109 Running handlers complete
192.168.0.109 Chef Client finished, 0/0 resources updated in 07 seconds
ブートストラップされたすべてのノードをリストします。
@chef-workstation:~/chef-repo/.chef$ knife node list
-client-1
以下のコマンドを実行してノードの詳細を取得します。
@chef-workstation:~/chef-repo/.chef$ knife node show -client-1
Node Name: -client-1
Environment: _default
FQDN: client-node
IP: 192.168.0.109
Run List:
Roles:
Recipes:
Platform: ubuntu 18.10
Tags:
これでセットアップの準備は完了です。
Ubuntu にシェフ サーバー、ワークステーション、ノードを正常にインストールしました。インフラストラクチャの構成管理のために、Chef でレシピとクックブックの作成を開始できます。
まったくの初心者の場合は、この Udemy コース も受講するとよいでしょう。






![2021 年に Raspberry Pi Web サーバーをセットアップする方法 [ガイド]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)




