Jelajahi Sumber

add ansible, scripts directories. Add ovh-bash, ovh.get.go scripts

volixer 5 bulan lalu
induk
melakukan
5d500027c4
9 mengubah file dengan 144 tambahan dan 0 penghapusan
  1. 0 0
      ansible/00-setup.yml
  2. 0 0
      ansible/README.md
  3. 5 0
      scripts/.ovh.app
  4. 16 0
      scripts/go.mod
  5. 41 0
      scripts/go.sum
  6. 45 0
      scripts/ovh-bash
  7. 11 0
      scripts/ovh.conf
  8. TEMPAT SAMPAH
      scripts/ovh.get
  9. 26 0
      scripts/ovh.get.go

+ 0 - 0
README.md → ansible/00-setup.yml


+ 0 - 0
ansible/README.md


+ 5 - 0
scripts/.ovh.app

@@ -0,0 +1,5 @@
+# https://www.ovh.com/auth/api/createToken?GET=/*&PUT=/*&POST=/*&DELETE=/*
+app_name=go-ovh
+app_key=94d2de428a9a9045
+app_sk=43e53c99e5f29f2e8f5cb53c5c1cb9f5
+app_ck=b2643bfbd6ed0251cd5e032e77a869f2

+ 16 - 0
scripts/go.mod

@@ -0,0 +1,16 @@
+module byom-ovh
+
+go 1.23.4
+
+require github.com/ovh/go-ovh v1.6.0
+
+require (
+	github.com/golang/protobuf v1.5.3 // indirect
+	github.com/pmezard/go-difflib v1.0.0 // indirect
+	golang.org/x/net v0.22.0 // indirect
+	golang.org/x/oauth2 v0.18.0 // indirect
+	google.golang.org/appengine v1.6.7 // indirect
+	google.golang.org/protobuf v1.31.0 // indirect
+	gopkg.in/ini.v1 v1.67.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)

+ 41 - 0
scripts/go.sum

@@ -0,0 +1,41 @@
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
+github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
+github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/jarcoal/httpmock v1.3.0 h1:2RJ8GP0IIaWwcC9Fp2BmVi8Kog3v2Hn7VXM3fTd+nuc=
+github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg=
+github.com/maxatome/go-testdeep v1.12.0 h1:Ql7Go8Tg0C1D/uMMX59LAoYK7LffeJQ6X2T04nTH68g=
+github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM=
+github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI=
+github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
+github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
+golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
+golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
+golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI=
+golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
+google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
+google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
+gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 45 - 0
scripts/ovh-bash

@@ -0,0 +1,45 @@
+#!/bin/bash
+# shellcheck disable=SC1090 # https://www.shellcheck.net/wiki/SC1090
+# shellcheck disable=SC2154 # https://www.shellcheck.net/wiki/SC2154
+# shellcheck disable=SC2016 # https://www.shellcheck.net/wiki/SC2016
+
+# main variables
+# using same config file than for Golang script
+OVH_CONF="./ovh.conf"
+OVH_API_VERSION="1.0"
+
+# source all ovh keys
+source <( grep '=' "${OVH_CONF}" )
+
+# Create ENDPOINT
+case "${endpoint}" in
+  ovh-eu) ENDPOINT="https://eu.api.ovh.com/${OVH_API_VERSION}" ;;
+  ovh-us) ENDPOINT="https://us.api.ovh.com/${OVH_API_VERSION}" ;;
+  ovh-ca) ENDPOINT="https://ca.api.ovh.com/${OVH_API_VERSION}" ;;
+  *) echo "${endpoint} is not yet supported" ; exit ;;
+esac
+
+# Signing process
+# @"method" "url" "post_data" "timestamp"
+TIME=$( curl -s "${ENDPOINT}/auth/time" )
+
+# Method
+# ovh-bash get vps
+HTTP_METHOD="${1:?need a http method}"
+HTTP_QUERY="${ENDPOINT}/${2:?need a query}"
+HTTP_BODY=""
+
+CLEAR_SIGN="${application_secret}+${consumer_key}+${HTTP_METHOD^^}+${HTTP_QUERY}+${HTTP_BODY}+${TIME}"
+SIG='$1$'$( echo -n "${CLEAR_SIGN}" | sha1sum - | cut -d' ' -f1 )
+
+# curl call
+curl -sL -X "${HTTP_METHOD^^}" \
+	-H "Content-Type:application/json;charset=utf-8" \
+	-H "X-Ovh-Application:${application_key}" \
+	-H "X-Ovh-Timestamp:${TIME}" \
+	-H "X-Ovh-Signature:${SIG}" \
+	-H "X-Ovh-Consumer:${consumer_key}" \
+	--data "${HTTP_BODY}" "${HTTP_QUERY}"
+
+exit $?
+

+ 11 - 0
scripts/ovh.conf

@@ -0,0 +1,11 @@
+# https://github.com/ovh/go-ovh?tab=readme-ov-file#application-keyapplication-secret
+[default]
+; general configuration: default endpoint
+endpoint=ovh-eu
+
+[ovh-eu]
+; configuration specific to 'ovh-eu' endpoint
+application_key=94d2de428a9a9045
+application_secret=43e53c99e5f29f2e8f5cb53c5c1cb9f5
+consumer_key=b2643bfbd6ed0251cd5e032e77a869f2
+

TEMPAT SAMPAH
scripts/ovh.get


+ 26 - 0
scripts/ovh.get.go

@@ -0,0 +1,26 @@
+package main
+
+import (
+	"fmt"
+	"github.com/ovh/go-ovh/ovh"
+)
+
+func main() {
+	client, err := ovh.NewEndpointClient("ovh-eu")
+	if err != nil {
+		fmt.Printf("Error: %q\n", err)
+		return
+	}
+
+	// Get all actual VPS
+	allVPS := []string{}
+	if err := client.Get("/vps/", &allVPS); err != nil {
+		fmt.Printf("Error: %q\n", err)
+		return
+	}
+
+	// Get the details of each VPS
+	for i, vpsName := range allVPS {
+		fmt.Printf("#%d : %+v\n", i+1, vpsName)
+	}
+}