OpenStackのCLIのやつ. OpenStack自体はToolじゃない所に書くがそのうちやいのやいのする.

IPアドレスからBindしてるPortの情報を所得.

$ openstack port list --fixed-ip ip-address=192.1.2.1

これで得られたPort IDで見る.

$ openstack port show {port id}

まとめるとこんな感じ

$ openstack port show $(openstack port list --fixed-ip ip-address=192.1.2.1 -f value -c ID)

設定の読み込み

openstackコマンドは $HOME/.config/openstack/clouds.yml や環境変数を読み込んで,アカウントや実行対象のリージョンを指定出来る. 自分は切り替えに便利なので,環境変数を指定している. 以下のようなシェルスクリプトを用意して,操作するリージョンに応じて読み込んでる. 本当はこれらを良い感じに設定ファイルからよみこむようなのを作ってさくさく切り替えたいけど,それだとほとんど, clouds.yml でよくないかという気がするので考えなかった事にする.

if [ -v _OLD_VIRTUAL_PS1 ]; then
    deactivate_openstack
fi


export OS_AUTH_URL=""
export OS_IDENTITY_API_VERSION=""
export OS_PASSWORD=""
export OS_PROJECT_DOMAIN_NAME=""
export OS_PROJECT_NAME=""
export OS_REGION_NAME=""
export OS_USER_DOMAIN_NAME=""
export OS_USERNAME=""
export LOCAL_OS_TOKEN=$(openstack token issue --format value --column id)
alias curl='curl -H "X-Auth-Token: $LOCAL_OS_TOKEN"'

_OLD_VIRTUAL_PS1="${PS1:-}"
export PS1="(OS $OS_REGION_NAME) ${PS1:-}"

deactivate_openstack () {
    if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then
        PS1="${_OLD_VIRTUAL_PS1:-}"
        export PS1
        unset _OLD_VIRTUAL_PS1
    fi
    unset OS_AUTH_URL
    unset OS_IDENTITY_API_VERSION
    unset  OS_PASSWORD
    unset OS_PROJECT_DOMAIN_NAME
    unset OS_PROJECT_NAME
    unset OS_REGION_NAME
    unset OS_USER_DOMAIN_NAME
    unset OS_USERNAME
    unset LOCAL_OS_TOKEN
    unalias curl
    unset deactivate_openstack
}

DesignateのDomain APEXにレコードを追加

openstack recordset create --type A --record '192.0.2.1' example.com. example.com.

ユーザに割り当てられたロールの確認

openstack role assignment list --user admin