{OCI DNS管理} DNSサービスを使ってWebサーバーの名前解決をする

 

https://oracle-japan.github.io/ocitutorials/intermediates/using-dns/

https://docs.oracle.com/ja-jp/iaas/Content/DNS/Concepts/gettingstarted.htm


前提: VCN作成済、ドメイン取得済

 


-- 1. コンピュートインスタンス作成(OL9)

oci compute image list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--all \
--query 'data.{"operating-system":"operating-system","operating-system-version":"operating-system-version","display-name":"display-name"}' \
--output=table


oci compute image list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--all \
--query 'data[?"display-name"==`'Oracle-Linux-9.2-2023.12.08-0'`].id | [0]' \
--raw-output

oci compute shape list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--image-id ocid1.image.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--query 'sort_by(data, &"ocpus").{"shape":"shape","ocpus":"ocpus","memory-in-gbs":"memory-in-gbs"}' \
--output=table

 

cat <<-'EOF' > a.yaml
#cloud-config
timezone: Asia/Tokyo
locale: ja_JP.utf8
package_update: true
packages:
  - httpd
runcmd:
  - setenforce 0
  - sed -i -e 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  - systemctl stop firewalld
  - systemctl disable firewalld
  - systemctl start httpd
  - systemctl enable httpd
  - echo $(hostname) > /var/www/html/index.html

EOF


oci compute instance launch \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--availability-domain OEIw:US-ASHBURN-AD-1 \
--subnet-id ocid1.subnet.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--assign-public-ip true \
--boot-volume-size-in-gbs 50 \
--display-name vm01 \
--fault-domain FAULT-DOMAIN-1 \
--image-id ocid1.image.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--shape VM.Standard.E2.1 \
--ssh-authorized-keys-file "$HOME/.ssh/id_rsa.pub" \
--user-data-file "./a.yaml" \
--preemptible-instance-config '{
  "preemption-action": {
    "preserve-boot-volume": false,
    "type": "TERMINATE"
  }
}' 


oci compute instance list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table

 

 

-- 2. DNSゾーン追加

 

oci dns zone create \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--name example.com \
--zone-type PRIMARY \
--scope GLOBAL 

oci dns zone list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 

 

 

-- 3. DNSレコード追加

oci dns record zone get \
--zone-name-or-id example.com 


oci dns record domain get \
--domain www.example.com \
--zone-name-or-id example.com 

 


oci dns record rrset update --generate-full-command-json-input 


oci dns record rrset update \
--domain www.example.com \
--rtype "A" \
--zone-name-or-id example.com \
--items  '[{"domain":"www.example.com","rdata":"192.0.2.1","rtype":"A","ttl":"30"}]' \
--force 

 

 

-- 4. パブリックDNSゾーンの委任

レコード名: 
www.example.com

値: 
ns1.p999.dns.oraclecloud.net.
ns2.p999.dns.oraclecloud.net.
ns3.p999.dns.oraclecloud.net.
ns4.p999.dns.oraclecloud.net.

 


-- 5. 動作確認

curl http://www.example.com

 


-- 6. クリーンアップ

-- DNSレコード削除

oci dns record rrset delete \
--domain www.example.com \
--rtype "A" \
--zone-name-or-id example.com \
--force 

oci dns record zone get \
--zone-name-or-id example.com 


-- DNSゾーン削除


oci dns zone delete \
--zone-name-or-id example.com \
--force 

oci dns zone list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 


-- コンピュートインスタンス削除

 

oci compute instance terminate \
--instance-id ocid1.instance.oc1.iad.000000000000000000000000000000000000000000000000000000000000 \
--force


oci compute instance list \
--compartment-id ocid1.compartment.oc1..000000000000000000000000000000000000000000000000000000000000 \
--query 'data.{"display-name":"display-name","id":"id","lifecycle-state":"lifecycle-state"}' \
--output table