[PYTHON] Code-Server-Online-Umgebung (6) Lassen Sie uns automatisieren

Dies ist der Artikel des Adventskalenders zum 16. Tag auf dem Code-Server 2019.

Inhaltsverzeichnis Tag 1 der lokalen Umwelt Online-Umgebung, Tag 1 Verbesserung der Arbeitsumgebung

Online-Umgebung, Tag 2 Erstellen eines virtuellen Netzwerks

Online-Umgebung 3. Tag Starten einer EC2-Instanz mit Boto3

Online-Umgebung, Tag 4 Versuchen Sie, Code-Server in der Cloud auszuführen

Online-Umgebung 5. Tag Code-Server auf Docker starten

Online-Umgebung, Tag 6 Lassen Sie uns automatisieren

Online-Umgebung 7. Tag Bereitstellen von Compose auf Git auf EC2

... Online .. Erstellt mit Coompose-Datei

Online-Version .. Versuchen Sie K8S

...

Dämonenumbau

Einführung

Bis zum letzten Mal habe ich versucht, Code-Server auf EC-Instanz mit Docker zu starten. Lassen Sie uns diesmal diese Arbeit automatisieren.

Erstellen Sie eine EC2-Instanz

Aus der letzten Fortsetzung

$ 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

Öffnen Sie "http: //127.0.0.1: 8443 /" in Ihrem Browser.

Screen Shot 2019-12-24 at 0.39.23.png

Am Terminal

Terminal


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

Erstellen Sie EC2Instance

$ python main.py --create

EC2-Informationen abrufen

$ 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'}

Mit SSH eingeben

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")

Installieren Sie Docker

Wir werden eine Docker-Umgebung erstellen

Auf 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")

Dockers Hallo Welt

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.

Starten wir 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

Es ist fertig !!

Lassen Sie uns löschen

#Abmelden von der ec2-Instanz
$ exit

#lokaler Code-Auf dem Server
$ python main.py --delete

Wenn Sie es mehrmals wiederverwenden möchten, beenden Sie bitte die ec2-Instanz

nächstes Mal

Machen wir es zu einer Webanwendung und erstellen eine Funktion zum Starten des angegebenen Docker-Images !! Es ist Zeit für die EC2 Instance Edition, und das war's.

Ich habe versucht, es selbst zu machen, aber AWS und GCP können vorhandene verwenden Ich werde es benutzen.

Code

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

Recommended Posts

Code-Server-Online-Umgebung (6) Lassen Sie uns automatisieren
Code-Server-Online-Umgebung (1)
Code-Server-Online-Umgebung (5) Starten Sie den Code-Server auf Docker
Code-Server-Online-Umgebung (4) Starten Sie den Code-Server auf der EC2-Instanz
Code-Server-Online-Umgebung (7) Stellen Sie compose on git auf EC2 bereit
Code-Server Lokale Umgebung (9) Bereiten wir eine MVC-Umgebung vor, einschließlich DB (6).
Code-Server-Online-Umgebung (3) Starten Sie eine EC2-Instanz mit Boto3
Code-Server Lokale Umgebung (4) Bereiten wir eine MVC-Umgebung einschließlich DB vor (1)
Code-Server-Online-Umgebung (2) Erstellen Sie mit Boto3 ein virtuelles Netzwerk
Code-Server Lokale Umgebung (5) Bereiten wir eine MVC-Umgebung einschließlich DB vor (2)
Automatisieren Sie die Umgebungserstellung mit ShellScript