Skip to content

Instantly share code, notes, and snippets.

@tily
Last active January 23, 2018 09:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tily/398f385b4b04e4b8e762 to your computer and use it in GitHub Desktop.
Save tily/398f385b4b04e4b8e762 to your computer and use it in GitHub Desktop.
ニフティクラウドのロードバランサーに IP 許可設定を追加するスクリプト

set-filter.rb

A script to add an IP permission to NIFCLOUD L4 load balancer.

Usage

$ gem install nifty-cloud-sdk
$ export ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
$ export SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
$ export NIFTY_CLOUD_ENDPOINT_URL=https://computing.jp-east-1.api.cloud.nifty.com/api/
$ ruby set-filter.rb -l lb001 -p 80:80 -i ZZZ.ZZZ.ZZZ.ZZZ

Or with docker:

$ vi .env
$ cat .env
ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
NIFTY_CLOUD_ENDPOINT_URL=https://computing.jp-east-1.api.cloud.nifty.com/api/
$ docker-compose run --rm app ruby set-filter.rb -l lb001 -p 80:80 -i ZZZ.ZZZ.ZZZ.ZZZ
version: "3"
services:
app:
build: .
volumes:
- .:/usr/local/app
env_file: .env
FROM ruby
WORKDIR /usr/local/app
RUN gem install nifty-cloud-sdk --pre
# coding:utf-8
# ニフティクラウドのロードバランサーに IP 許可設定を追加するスクリプト
# Usage:
# gem install nifty-cloud-sdk
# export ACCESS_KEY_ID=XXXXXXXXXXXXXXXXXXXX
# export SECRET_ACCESS_KEY=YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
# ruby set-filter.rb -l lb001 -p 80:80 -i ZZZ.ZZZ.ZZZ.ZZZ
require 'optparse'
require 'NIFTY'
def parse_options(args)
options = {}
parser = OptionParser.new
parser.on('-l', '--load-balancer NAME') {|v| options[:lb] = v }
parser.on('-p', '--ports LOADBALANCER_PORT:INSTNACE_PORT') {|v| options[:ports] = v }
parser.on('-i', '--ip IP_ADDRESS') {|v| options[:ip] = v }
parser.parse!(args)
options
end
def api
@api ||= NIFTY::Cloud::Base.new(
:access_key => ENV['ACCESS_KEY_ID'],
:secret_key => ENV['SECRET_ACCESS_KEY']
)
end
def main(args)
options = parse_options(args)
port, instance_port = options[:ports].split(':')
puts "Setting allow filter to #{options[:lb]} (#{port} -> #{instance_port})"
api.send(:response_generator,
'Action' => 'SetFilterForLoadBalancer',
'LoadBalancerName' => options[:lb],
'LoadBalancerPort' => port,
'InstancePort' => instance_port,
'FilterType' => '1',
'IPAddresses.member.1.IPAddress' => options[:ip],
'IPAddresses.member.1.AddOnFilter' => 'true'
)
puts "Done!"
end
main(ARGV.dup)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment