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
Bis zum letzten Mal habe ich versucht, Code-Server auf EC-Instanz mit Docker zu starten. Lassen Sie uns diesmal diese Arbeit automatisieren.
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.
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'}
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")
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")
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.
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
Es ist fertig !!
#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
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.
https://github.com/kyorohiro/advent-2019-code-server/tree/master/remote_cs06
Recommended Posts