cloud/IasS/ex1-2/mysql/cloud-init.ipynb

197 lines
6.5 KiB
Plaintext
Raw Normal View History

2022-12-30 11:57:05 +01:00
{
"cells": [
{
"cell_type": "code",
2023-01-22 18:59:39 +01:00
"execution_count": 2,
2022-12-30 11:57:05 +01:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Key s444498-pzc-ssh-key-2 already in use: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAj15oTbXA0KGBw5V/76KXDgJZpLNrxUO/rTA0u0eRl1 wirus@wirusowylapek\n"
]
}
],
"source": [
"from hcloud import Client\n",
"client = Client(\n",
" token=\"KccUEiddxtzGoLWSNC3V8tylq7MYHCjdnShtgasQ8jSbHqCjGoaa6Rq7yoz4uS23\"\n",
")\n",
"PREFIX = \"s444498\"\n",
"YOUR_LOCAL_SSH_PUBKEY = \"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAj15oTbXA0KGBw5V/76KXDgJZpLNrxUO/rTA0u0eRl1 wirus@wirusowylapek\"\n",
"try:\n",
" ssh_key = client.ssh_keys.create(name=f\"{PREFIX}-pzc-ssh-key-2\", public_key=YOUR_LOCAL_SSH_PUBKEY)\n",
" print(f\"Key {ssh_key.data_model.name} created: {ssh_key.data_model.public_key}\")\n",
"except:\n",
" ssh_key = client.ssh_keys.get_by_name(f\"{PREFIX}-pzc-ssh-key-2\")\n",
" print(f\"Key {ssh_key.data_model.name} already in use: {ssh_key.data_model.public_key}\")"
]
},
{
"cell_type": "code",
2023-01-22 18:59:39 +01:00
"execution_count": null,
2022-12-30 11:57:05 +01:00
"metadata": {},
2023-01-22 18:59:39 +01:00
"outputs": [],
2022-12-30 11:57:05 +01:00
"source": [
"from hcloud.networks.domain import NetworkSubnet\n",
"\n",
"try:\n",
" vnet = client.networks.create(\n",
" name=f\"{PREFIX}-pzc-test-vnet\", \n",
" ip_range=\"10.10.10.0/24\", \n",
" subnets=[\n",
" NetworkSubnet(ip_range=\"10.10.10.0/24\", network_zone=\"eu-central\", type=\"cloud\")\n",
" ]\n",
" )\n",
" print(f\"Created network: {vnet.data_model.name} ({vnet.data_model.ip_range})\")\n",
"except:\n",
" vnet = client.networks.get_by_name(\n",
" f\"{PREFIX}-pzc-test-vnet\", \n",
" )\n",
" print(f\"Network in use: {vnet.data_model.name} ({vnet.data_model.ip_range})\")"
]
},
{
"cell_type": "code",
2023-01-22 18:59:39 +01:00
"execution_count": null,
2022-12-30 11:57:05 +01:00
"metadata": {},
2023-01-22 18:59:39 +01:00
"outputs": [],
2022-12-30 11:57:05 +01:00
"source": [
"from hcloud.locations.domain import Location\n",
"from hcloud.images.domain import Image\n",
"from hcloud.server_types.domain import ServerType\n",
"\n",
"cloud_init_mysql=r'''#cloud-config\n",
"packages:\n",
" - apt-transport-https\n",
" - ca-certificates\n",
" - curl\n",
" - gnupg-agent\n",
" - software-properties-common\n",
"\n",
"write_files:\n",
" - path: /root/docker-compose.yml\n",
" content: |\n",
2022-12-30 14:12:01 +01:00
" version: '3.9'\n",
2022-12-30 11:57:05 +01:00
"\n",
" services:\n",
" db:\n",
" image: mysql:5.7\n",
" restart: always\n",
2022-12-30 14:12:01 +01:00
" environment:\n",
" MYSQL_DATABASE: gitea\n",
" MYSQL_USER: gitea\n",
" MYSQL_PASSWORD: gitea\n",
" MYSQL_ROOT_PASSWORD: gitea\n",
" ports:\n",
" - \"10.10.10.2:3306:3306\"\n",
" volumes:\n",
" - my-db:/var/lib/mysql\n",
" phpmyadmin:\n",
" image: phpmyadmin\n",
" restart: always\n",
" ports:\n",
" - \"8080:80\"\n",
" volumes:\n",
" my-db: {}\n",
2022-12-30 11:57:05 +01:00
"\n",
"runcmd:\n",
" - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -\n",
" - add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\"\n",
" - apt-get update -y\n",
" - apt-get install -y docker-ce docker-ce-cli containerd.io\n",
" - curl -L \"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)\" -o /usr/local/bin/docker-compose\n",
" - chmod +x /usr/local/bin/docker-compose\n",
" - systemctl start docker\n",
" - systemctl enable docker\n",
" - cd /root/ && docker-compose up -d\n",
" '''\n",
"\n",
2023-01-22 18:59:39 +01:00
"for i in range(20):\n",
"\n",
" mysql_server = client.servers.create(\n",
" name=f\"{PREFIX}-mysql-{i}\", \n",
" server_type=ServerType(\"cx11\"), \n",
" image=Image(name=\"ubuntu-20.04\"), \n",
" ssh_keys=[ssh_key], \n",
" networks=[vnet], \n",
" location=Location(\"hel1\"), \n",
" user_data=cloud_init_mysql\n",
" )\n",
2022-12-30 11:57:05 +01:00
"\n",
2023-01-22 18:59:39 +01:00
" mysql_server.action.wait_until_finished()\n",
" print(f\"Creating gitea server: {mysql_server.action.complete}\")"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'client' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn [1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m shared_volume \u001b[39m=\u001b[39m client\u001b[39m.\u001b[39mvolumes\u001b[39m.\u001b[39mcreate(\n\u001b[1;32m 2\u001b[0m size\u001b[39m=\u001b[39m\u001b[39m15\u001b[39m,\n\u001b[1;32m 3\u001b[0m name\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mgitea-volume\u001b[39m\u001b[39m\"\u001b[39m)\n",
"\u001b[0;31mNameError\u001b[0m: name 'client' is not defined"
]
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Usuwanie 9 serwerów\n"
]
}
],
"source": [
"servers = client.servers.get_all()\n",
"print(f\"Usuwanie {len(servers)} serwerów\")\n",
"for s in servers:\n",
" if s.data_model.name.startswith(PREFIX):\n",
" action = client.servers.delete(s)\n",
" print(f\"\\tUsuwanie serwera {s.data_model.name} ({s.data_model.public_net.ipv4.ip}): {action.data_model.status}\")"
2022-12-30 11:57:05 +01:00
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.10.8 64-bit",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.8"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "767d51c1340bd893661ea55ea3124f6de3c7a262a8b4abca0554b478b1e2ff90"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}