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
Jusqu'à la dernière fois, j'ai essayé de lancer Code-Server sur EC Instance en utilisant Docker. Cette fois, automatisons ce travail.
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 /
.
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'}
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")
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")
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
C'est fait !!
#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
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.
https://github.com/kyorohiro/advent-2019-code-server/tree/master/remote_cs06
Recommended Posts