[PYTHON] environnement en ligne de serveur de code (6) Automatisons

Ceci est l'article du 16ème jour de Advent Calender sur le serveur de code 2019.

table des matières Environnement local jour 1 Environnement en ligne, jour 1 Améliorer l'environnement de travail

Environnement en ligne, jour 2 Créer un réseau virtuel

Environnement en ligne 3ème jour Lancement d'une instance EC2 avec Boto3

Environnement en ligne, jour 4 Essayez d'exécuter Code-Server dans le cloud

Environnement en ligne 5ème jour Lancer le serveur de code sur Docker

Environnement en ligne, jour 6 automatisons

Environnement en ligne 7ème jour Deploy compose sur git sur EC2

... En ligne .. Construit avec le fichier Coompose

Version en ligne .. Essayez K8S

...

Remodelage démoniaque

introduction

Jusqu'à la dernière fois, j'ai essayé de lancer Code-Server sur EC Instance en utilisant Docker. Cette fois, automatisons ce travail.

Créer une instance EC2

De la dernière suite

$ git clone https://github.com/kyorohiro/advent-2019-code-server.git
$ cd advent-2019-code-server/remote_cs04/
$ docker-compose build
$ docker-compose up -d

Dans votre navigateur, ouvrez http: //127.0.0.1: 8443 /.

Screen Shot 2019-12-24 at 0.39.23.png

Sur le terminal

Terminal


$ pip install -r requirements.txt
$ aws configure 
..
..

Créer EC2Instance

$ python main.py --create

Obtenir des informations EC2

$ python main.py --get
>>>> i-0d1e7775a07bbb326
>>>> 
>>>> 3.112.18.33
>>>> ip-10-1-0-228.ap-northeast-1.compute.internal
>>>> 10.1.0.228
>>>> {'Code': 16, 'Name': 'running'}

Entrez avec SSH

initialize.py


import paramiko


def run_script(ip:str, rsa_key_path:str):
    rsa_key: paramiko.rsakey.RSAKey = paramiko.rsakey.RSAKey.from_private_key_file(rsa_key_path)
    client: paramiko.SSHClient = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username="ubuntu", pkey=rsa_key)


    stdin, stdout, stderr = client.exec_command("ls /")
    d = stdout.read().decode('utf-8')
    print(f"{d}")
    client.close()

run_script("18.177.154.240", "/works/app/advent-code-server.pem")

Installer Docker

Nous allons créer un environnement Docker

Sur EC2

initialize.py


import paramiko


def run_command(client: paramiko.SSHClient, command: str):
    print(f"run>{command}\n")
    stdin, stdout, stderr = client.exec_command(command)
    d = stdout.read().decode('utf-8')
    print(f"stdout>\n{d}")
    d = stderr.read().decode('utf-8')
    print(f"stderr>\n{d}")
    return stdin

def run_script(ip:str, rsa_key_path:str):
    rsa_key: paramiko.rsakey.RSAKey = paramiko.rsakey.RSAKey.from_private_key_file(rsa_key_path)
    client: paramiko.SSHClient = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username="ubuntu", pkey=rsa_key)

    run_command(client, "sudo apt-get update")
    run_command(client, "sudo apt-get install -y docker.io")

    client.close()

run_script("18.177.154.240", "/works/app/advent-code-server.pem")

Hello World de Docker

initialize.py


import paramiko


def run_command(client: paramiko.SSHClient, command: str):
    print(f"run>{command}\n")
    stdin, stdout, stderr = client.exec_command(command)
    d = stdout.read().decode('utf-8')
    print(f"stdout>\n{d}")
    d = stderr.read().decode('utf-8')
    print(f"stderr>\n{d}")
    return stdin

def run_script(ip:str, rsa_key_path:str):
    rsa_key: paramiko.rsakey.RSAKey = paramiko.rsakey.RSAKey.from_private_key_file(rsa_key_path)
    client: paramiko.SSHClient = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username="ubuntu", pkey=rsa_key)

    run_command(client, "sudo apt-get update")
    run_command(client, "sudo apt-get install -y docker.io")
    run_command(client, "sudo docker run hello-world")

    client.close()

run_script("18.177.154.240", "/works/app/advent-code-server.pem")
atest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Commençons Code-Server

initialize.py


import paramiko


def run_command(client: paramiko.SSHClient, command: str):
    print(f"run>{command}\n")
    stdin, stdout, stderr = client.exec_command(command)
    d = stdout.read().decode('utf-8')
    print(f"stdout>\n{d}")
    d = stderr.read().decode('utf-8')
    print(f"stderr>\n{d}")
    return stdin

def run_script(ip:str, rsa_key_path:str):
    rsa_key: paramiko.rsakey.RSAKey = paramiko.rsakey.RSAKey.from_private_key_file(rsa_key_path)
    client: paramiko.SSHClient = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(ip, username="ubuntu", pkey=rsa_key)

    run_command(client, "sudo apt-get update")
    run_command(client, "sudo apt-get install -y docker.io")
#    run_command(client, "mkdir -p  ${HOME}/.local/share/code-server/extensions")
    run_command(client, "sudo docker run -p 0.0.0.0:8080:8080 -p0.0.0.0:8443:8443 codercom/code-server:v2 --cert")
    

    client.close()

run_script("18.177.154.240", "/works/app/advent-code-server.pem")
..
..
info  Server listening on https://0.0.0.0:8080
info    - Password is 86821ed9f02ef11d83e980da
info      - To use your own password, set the PASSWORD environment variable
info      - To disable use `--auth none`
info    - Using generated certificate and key for HTTPS
Screen Shot 2019-12-24 at 1.11.08.png Screen Shot 2019-12-24 at 1.06.50.png Screen Shot 2019-12-24 at 1.12.23.png

C'est fait !!

Supprimons

#déconnexion de l'instance ec2
$ exit

#code local-Sur le serveur
$ python main.py --delete

Si vous souhaitez le réutiliser plusieurs fois, veuillez arrêter l'instance ec2

la prochaine fois

Faisons-en une application Web et créons une fonction pour lancer l'image Docker spécifiée !! Il est temps pour l'édition EC2 Instance, et c'est tout.

J'ai essayé de le faire moi-même, mais AWS et GCP peuvent utiliser ceux existants, donc Je vais l'utiliser.

code

https://github.com/kyorohiro/advent-2019-code-server/tree/master/remote_cs06

Recommended Posts

environnement en ligne de serveur de code (6) Automatisons
environnement en ligne de serveur de code (1)
environnement en ligne du serveur de code (5) Lancer le serveur de code sur Docker
environnement en ligne du serveur de code (4) Lancer le serveur de code sur l'instance EC2
environnement en ligne de serveur de code (7) Déploiement de compose sur git sur EC2
code-server Environnement local (9) Préparons un environnement MVC comprenant DB (6)
environnement en ligne de serveur de code (3) Lancer une instance EC2 avec Boto3
code-server Environnement local (4) Préparons un environnement MVC incluant DB (1)
environnement en ligne de serveur de code (2) Créer un réseau virtuel avec Boto3
code-server Environnement local (5) Préparons un environnement MVC incluant DB (2)
Automatisez la construction d'environnement avec ShellScript