Facebook Twitter
お問い合わせ
TOPICS
更新情報
ホーム > ブログ > Ansible > 【Oracle Cloud】 Cloud Shell上のAnsibleを使ってLinuxの設定を行う

【Oracle Cloud】 Cloud Shell上のAnsibleを使ってLinuxの設定を行う

Ansible
ブログ
ソフトウェア
2026.08.17
今ある Linuxサーバに 手軽にAnsibleを使ってみたい

こんにちは、k.sasakiです。本日はOCIのCloud ShellにプリインストールされたAnsibleを使って、環境内のOracle Linuxを設定する方法について解説します。

はじめに

OSの初期設定は決まった作業を何度も実施することが多いですが、手作業で行うと単純なミスが起こりがちです。Cloud ShellにはAnsibleがプリインストールされているので、環境内のサーバにAnsibleを導入することなく、Cloud ShellからVCN上のプライベートサブネット上のインスタンスにAnsibleで設定を加えることができます。

本記事では、VCN内にプロビジョニングされている Oracle Linux 9 サーバ(プライベートIPのみ付与)に対し、Cloud Shellの「プライベート・ネットワーク・アクセス」機能を利用して直接接続し、Cloud Shell上からAnsibleを使って初期設定を自動化する手順を解説します。

本構成を利用する際の注意点は以下のとおりです。

・Cloud Shellは無操作状態が60分続くとセッションが切断されます

・Cloud ShellはホームリージョンのVCNにのみプライベート接続できます

・Cloud Shell上のAnsibleについては2026/8/6時点でAnsible 2.9系がインストールされています

構成イメージ

今回解説する構成イメージです。

Cloud Shell プライベート・ネットワーク・アクセス
Cloud Shell プライベート・ネットワーク・アクセス

Step 1: OCI Cloud Shell から VCN へのプライベートアクセス接続

OCIコンソールからアクセス可能な Cloud Shell は「プライベート・ネットワーク・アクセス」機能を使用することで、VCN内のプライベートIP宛てに直接アクセスできるようになります。

1-1. プライベート・ネットワークへのアクセス設定

詳細な手順は弊社ブログに記載の手順をご覧ください。

下記の画像は手順を実行して、今回の対象のサーバが存在するansible-vcnのサブネットを「プライベート・ネットワーク定義リスト」に登録して、アタッチした状態です。「詳細」の文字をクリックすると、Cloud Shellの接続状況や接続先のサブネットを確認できます。

サブネットのアタッチ確認1
サブネットのアタッチ確認1

サブネットのアタッチ確認2
サブネットのアタッチ確認2

新規に登録する場合は、以下のように「プライベート・ネットワーク定義リスト」を選択して、接続するVCNを登録することができます。

定義リスト設定1(作成後)
定義リスト設定1(作成後)

定義リスト設定2(作成後)
定義リスト設定2(作成後)

1-2. アクセス確認

Cloud Shell上から対象サーバ(例:10.0.1.233)へSSH接続し、OSバージョンとPythonのパスを確認します。対象サーバのアクセスに必要な鍵ファイルはこちらの手順でCloud Shellにアップロードして、SSH接続できるようにしておきます。Pythonのパスは後ほどAnsibleのinventoryファイルに記載します。

(Cloud Shell)
$ ssh opc@10.0.1.233

(対象サーバ)
$ cat /etc/oracle-release 
Oracle Linux Server release 9.8
$ which python3
/usr/bin/python3
$ exit
logout

無事、プライベートIP経由で対象サーバにアクセスできました。

Step 2: Cloud ShellのAnsible環境確認

Cloud Shell にはデフォルトで Ansible がプリインストールされているため、特別な環境構築を行わずにすぐ Playbook を作成・実行できます。

(Cloud Shell)
$ ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/k_sasaki/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Jul 14 2026, 16:15:45) [GCC 8.5.0 20210514 (Red Hat 8.5.0-28.0.1)]

Step 3: Ansible Playbookの作成

Cloud Shell上でAnsibleの実行に必要なinventoryとPlaybookを作成します。

3-1. 対象サーバ用のディレクトリと各ファイルの作成

Cloud Shell上に対象のサーバ用のディレクトリを作成し、inventoryとPlaybookを配置します。

(Cloud Shell)
$ mkdir -p ~/ansible-ol9
$ cd ~/ansible-ol9
$ touch inventory.ini
$ touch setup.yml

3-2. inventoryの作成 (inventory.ini)

SSH接続に必要なユーザー名(opc)、対象サーバへアクセスするための秘密鍵のパス、およびStep 1で確認した対象サーバのPythonのパスを記載します。

[oraclelinux]
10.0.1.233

[oraclelinux:vars]
ansible_user=opc
ansible_ssh_private_key_file=~/.ssh/id_rsa
ansible_python_interpreter=/usr/bin/python3

3-3. Playbookの作成 (setup.yml)

OSパッケージの最新化、タイムゾーンの設定、ユーティリティ(tree, nc)の導入および firewalld の停止を行う Playbook を作成します。

---
- name: Cloud ShellからVCN上のOracle Linux 9を自動セットアップ
  hosts: oraclelinux
  become: true
  tasks:
    - name: DNFパッケージの最新化
      dnf:
        name: "*"
        state: latest

    - name: タイムゾーンを Asia/Tokyo に設定
      timezone:
        name: Asia/Tokyo

    - name: ユーティリティ(tree, nc)のインストール
      dnf:
        name:
          - tree
          - nc
        state: present

    - name: firewalldの停止と自動起動の無効化
      systemd:
        name: firewalld
        state: stopped
        enabled: false

Step 4: Ansible Playbookの実行

4-1. pingモジュールでの導通確認

Playbook実行前に、Ansible経由で対象サーバに疎通できるか ping モジュールを実行します。ping: pong が返ってくれば、Ansibleによる操作準備は完了です。

(Cloud Shell)
$ ansible oraclelinux -i inventory.ini -m ping
10.0.1.233 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

4-2. Ansible Playbookのドライラン

--check オプションをつけることで、実際に変更を加える前にどのような操作が行われるかを確認できます。

(Cloud Shell)
$ ansible-playbook -i inventory.ini setup.yml --check

PLAY [Cloud ShellからVCN上のOracle Linux 9を自動セットアップ] *********************************

TASK [Gathering Facts]
*********************************
ok: [10.0.1.233]

TASK [DNFパッケージの最新化] 
*********************************
changed: [10.0.1.233]

TASK [タイムゾーンを Asia/Tokyo に設定]
*********************************
changed: [10.0.1.233]

TASK [ユーティリティ(tree, nc)のインストール] 
*********************************
changed: [10.0.1.233]

TASK [firewalldの停止と自動起動の無効化] 
*********************************
changed: [10.0.1.233]

PLAY RECAP 
*************************************************
10.0.1.233                 : ok=5    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

4-3. Ansible Playbookの実行

Playbookを実行し、サーバ設定と各種ツールのインストールを適用します。

(Cloud Shell)
$ ansible-playbook -i inventory.ini setup.yml

(中略)
PLAY RECAP 
*************************************************
10.0.1.233                 : ok=5    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

パッケージの更新は1回で終わらないことがあるので、再度実行します。

(Cloud Shell)
$ ansible-playbook -i inventory.ini setup.yml

(中略)
TASK [DNFパッケージの最新化] 
*********************************
changed: [10.0.1.233]
(中略)
PLAY RECAP 
*************************************************
10.0.1.233                 : ok=5    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

パッケージの最新化でchangedが1件ありました。changedが0件になるまで実行します。

(Cloud Shell)
$ ansible-playbook -i inventory.ini setup.yml
(中略)
PLAY RECAP 
*************************************************
10.0.1.233                 : ok=5    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

changedが0件になったので、Playbookの実行は完了です。

4-4. 導入結果の確認

対象サーバ(10.0.1.233)にSSH接続して各コマンドを実行して結果を確認します。

(Cloud Shell)
$ ssh opc@10.0.1.233

(対象サーバ)
# タイムゾーンの確認
$ timedatectl
               Local time: Thu 2026-08-06 14:25:04 JST
           Universal time: Thu 2026-08-06 05:25:04 UTC
                 RTC time: Thu 2026-08-06 05:25:03
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

# tree コマンドの確認
$ tree --version
tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro 

# nc (netcat) コマンドの確認
$ nc --version
Ncat: Version 7.92 ( https://nmap.org/ncat )

# ファイアウォールが停止しているか確認
$ sudo systemctl is-active firewalld
inactive

# ファイアウォールが無効になっているか確認
$ sudo systemctl is-enabled firewalld
disabled

Playbookで実行したコマンドが正常に動作することを確認できました。
最後に再起動して新しいカーネルが適用されているかも確認しました。

(対象サーバ)
# reboot前
$ uname -r
6.12.0-204.92.4.3.1.el9uek.x86_64

# reboot後
$ uname -r
6.12.0-204.92.4.4.el9uek.x86_64

まとめ

本記事では、環境内のサーバにAnsibleを導入することなく、OCIの標準機能であるCloud Shellから、VCN内のOracle Linux 9に対してAnsibleで初期設定を行う手順を解説しました。

本構成のメリット

  1. 踏み台サーバ完全不要: 踏み台VMの構築管理費やセキュリティリスクを削減できます。

  1. クラウドブラウザ完結: ローカル環境へのツール導入不要で、OCIコンソール上のCloud ShellのみでAnsibleの構成管理が完結します。

すでにVCN環境をお持ちの方や、プライベートサーバの自動設定を手軽に試したい方は、ぜひCloud Shell × Ansibleの組み合わせを活用してみてください。

参考ドキュメント


この記事が気に入ったら
「いいね!」

この記事を書いた人


関連コンテンツ

CONTACT お問い合わせ

Cloudiiのサービスやプロダクトについて
興味をお持ちの方は、
お気軽にお問い合わせください。