diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-ansible-droplet.spec | 321 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 323 insertions, 0 deletions
@@ -0,0 +1 @@ +/ansible-droplet-0.5.0.tar.gz diff --git a/python-ansible-droplet.spec b/python-ansible-droplet.spec new file mode 100644 index 0000000..8848346 --- /dev/null +++ b/python-ansible-droplet.spec @@ -0,0 +1,321 @@ +%global _empty_manifest_terminate_build 0 +Name: python-ansible-droplet +Version: 0.5.0 +Release: 1 +Summary: A cli to Create / Destroy DigitalOcean Droplets +License: MIT +URL: https://github.com/FlorianKempenich/ansible-droplet +Source0: https://mirrors.aliyun.com/pypi/web/packages/22/f1/6d4291f6c320cc896d65e7d11d2d675fe5ffbfb7ece96977b4531f2ce6b0/ansible-droplet-0.5.0.tar.gz +BuildArch: noarch + + +%description +## Usage +### One time setup +Before using the tool, a simple _one-time-setup_ must be done. +1. Make sure you have a **`ssh` public key**, or [generate one](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#generating-a-new-ssh-key) +1. Make sure you have a **Digital Ocean API token**, or [generate one](https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2) +1. **Store in a file** the Digital Ocean API token in clear<sup>[1](#f1)</sup> +1. Note down: + * _Path_ to your **ssh public key** + * _Path_ to the file containing the **Digital Ocean API token** +1. Run `ansible-droplet config` see below for more detail on the config parameters +### Create +``` +ansible-droplet create my_droplet +``` +##### Creation process +* **Create a new Droplet** on your Ditigal Ocean Account +* **Set it up** with: Swap, new sudo user, glances server +* **Create a SSH entry** in your `~/.ssh/config` to be able to ssh directly with its name: `ssh my_droplet` +* **Create a ansible inventory entry** in `~/.ansible-droplet-inventory` +### Destroy +``` +ansible-droplet destroy my_droplet +``` +##### Destruction process +* **Destroy the Droplet** from your Ditigal Ocean Account +* **Remove the SSH entry** from your `~/.ssh/config` to be able to ssh directly with its name: `ssh my_droplet` +* **Remove the ansible inventory entry** from `~/.ansible-droplet-inventory` +## Advanced Usage +### Config parameters +When running `ansible-droplet config` a couple of parameters must be provided: +* **Path to SSH key**: + No brainer, the path to your SSH public key. + _Default: `~/.ssh/id_rsa.pub`_ +* **Name of SSH key on Digital Ocean**: + To prevent uploading the public keys each time, Digital Ocean offers to store them under a name. It can be anything. + _Default: `Main SSH Key`_ +* **Path to Ditigal Ocean token**: + The path to the file containing your Digital Ocean token in plain text. + _No defaults_ +* **User on Droplet - Username:** + Username for the sudo user being created on the Droplet. + _No defaults_ +* **User on Droplet - Default Password:** + Default password for the sudo user being created on the Droplet. + _No defaults_ + _Do not forget to change it after the first login!_ +### Droplet specs +You can specify the droplet size and specs when creating a new droplet. +Simply list it after the droplet name: +``` +ansible-droplet create my_droplet SPEC_NAME +``` +For now, only 3 specs are supported<sup>[2](#f2)</sup>: +* **Micro** + * size: "512mb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +* **Mini** + * size: "1gb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +* **Power** + * size: "4gb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +The list of specification are stored on the repository: [Droplet Specs](https://github.com/FlorianKempenich/ansible-droplet/tree/master/ansible_droplet/ansible/droplet_specs) +### Ansible Droplet Inventory +It is possible to access the Droplet from any other ansible playbook via its **name**: + - hosts: my_droplet +For that purpose the file `~/.ansible-droplet-inventory` is created. +`~/.ansible-droplet-inventory` contains ansible inventory entries for each Droplet created with the `ansible-droplet` tool. +To use the droplet in a playbook, either: +* Point your _inventory_ to the `~/.ansible-droplet-inventory` file +* Point your _inventory_ to a directory containing a symlink to the `~/.ansible-droplet-inventory` file +From there you can reference the Droplet directly by name. +### Multiple configuration - Multiple Digital Ocean accounts +You can use multiple configurations to support: +* Multiple **DigitalOcean accounts** +* Multiple **SHH Keys** +* Multiple **default user/password** +The configuration generated by `ansible-droplet config` is kept in the installation directory. + +%package -n python3-ansible-droplet +Summary: A cli to Create / Destroy DigitalOcean Droplets +Provides: python-ansible-droplet +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-ansible-droplet +## Usage +### One time setup +Before using the tool, a simple _one-time-setup_ must be done. +1. Make sure you have a **`ssh` public key**, or [generate one](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#generating-a-new-ssh-key) +1. Make sure you have a **Digital Ocean API token**, or [generate one](https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2) +1. **Store in a file** the Digital Ocean API token in clear<sup>[1](#f1)</sup> +1. Note down: + * _Path_ to your **ssh public key** + * _Path_ to the file containing the **Digital Ocean API token** +1. Run `ansible-droplet config` see below for more detail on the config parameters +### Create +``` +ansible-droplet create my_droplet +``` +##### Creation process +* **Create a new Droplet** on your Ditigal Ocean Account +* **Set it up** with: Swap, new sudo user, glances server +* **Create a SSH entry** in your `~/.ssh/config` to be able to ssh directly with its name: `ssh my_droplet` +* **Create a ansible inventory entry** in `~/.ansible-droplet-inventory` +### Destroy +``` +ansible-droplet destroy my_droplet +``` +##### Destruction process +* **Destroy the Droplet** from your Ditigal Ocean Account +* **Remove the SSH entry** from your `~/.ssh/config` to be able to ssh directly with its name: `ssh my_droplet` +* **Remove the ansible inventory entry** from `~/.ansible-droplet-inventory` +## Advanced Usage +### Config parameters +When running `ansible-droplet config` a couple of parameters must be provided: +* **Path to SSH key**: + No brainer, the path to your SSH public key. + _Default: `~/.ssh/id_rsa.pub`_ +* **Name of SSH key on Digital Ocean**: + To prevent uploading the public keys each time, Digital Ocean offers to store them under a name. It can be anything. + _Default: `Main SSH Key`_ +* **Path to Ditigal Ocean token**: + The path to the file containing your Digital Ocean token in plain text. + _No defaults_ +* **User on Droplet - Username:** + Username for the sudo user being created on the Droplet. + _No defaults_ +* **User on Droplet - Default Password:** + Default password for the sudo user being created on the Droplet. + _No defaults_ + _Do not forget to change it after the first login!_ +### Droplet specs +You can specify the droplet size and specs when creating a new droplet. +Simply list it after the droplet name: +``` +ansible-droplet create my_droplet SPEC_NAME +``` +For now, only 3 specs are supported<sup>[2](#f2)</sup>: +* **Micro** + * size: "512mb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +* **Mini** + * size: "1gb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +* **Power** + * size: "4gb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +The list of specification are stored on the repository: [Droplet Specs](https://github.com/FlorianKempenich/ansible-droplet/tree/master/ansible_droplet/ansible/droplet_specs) +### Ansible Droplet Inventory +It is possible to access the Droplet from any other ansible playbook via its **name**: + - hosts: my_droplet +For that purpose the file `~/.ansible-droplet-inventory` is created. +`~/.ansible-droplet-inventory` contains ansible inventory entries for each Droplet created with the `ansible-droplet` tool. +To use the droplet in a playbook, either: +* Point your _inventory_ to the `~/.ansible-droplet-inventory` file +* Point your _inventory_ to a directory containing a symlink to the `~/.ansible-droplet-inventory` file +From there you can reference the Droplet directly by name. +### Multiple configuration - Multiple Digital Ocean accounts +You can use multiple configurations to support: +* Multiple **DigitalOcean accounts** +* Multiple **SHH Keys** +* Multiple **default user/password** +The configuration generated by `ansible-droplet config` is kept in the installation directory. + +%package help +Summary: Development documents and examples for ansible-droplet +Provides: python3-ansible-droplet-doc +%description help +## Usage +### One time setup +Before using the tool, a simple _one-time-setup_ must be done. +1. Make sure you have a **`ssh` public key**, or [generate one](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#generating-a-new-ssh-key) +1. Make sure you have a **Digital Ocean API token**, or [generate one](https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2) +1. **Store in a file** the Digital Ocean API token in clear<sup>[1](#f1)</sup> +1. Note down: + * _Path_ to your **ssh public key** + * _Path_ to the file containing the **Digital Ocean API token** +1. Run `ansible-droplet config` see below for more detail on the config parameters +### Create +``` +ansible-droplet create my_droplet +``` +##### Creation process +* **Create a new Droplet** on your Ditigal Ocean Account +* **Set it up** with: Swap, new sudo user, glances server +* **Create a SSH entry** in your `~/.ssh/config` to be able to ssh directly with its name: `ssh my_droplet` +* **Create a ansible inventory entry** in `~/.ansible-droplet-inventory` +### Destroy +``` +ansible-droplet destroy my_droplet +``` +##### Destruction process +* **Destroy the Droplet** from your Ditigal Ocean Account +* **Remove the SSH entry** from your `~/.ssh/config` to be able to ssh directly with its name: `ssh my_droplet` +* **Remove the ansible inventory entry** from `~/.ansible-droplet-inventory` +## Advanced Usage +### Config parameters +When running `ansible-droplet config` a couple of parameters must be provided: +* **Path to SSH key**: + No brainer, the path to your SSH public key. + _Default: `~/.ssh/id_rsa.pub`_ +* **Name of SSH key on Digital Ocean**: + To prevent uploading the public keys each time, Digital Ocean offers to store them under a name. It can be anything. + _Default: `Main SSH Key`_ +* **Path to Ditigal Ocean token**: + The path to the file containing your Digital Ocean token in plain text. + _No defaults_ +* **User on Droplet - Username:** + Username for the sudo user being created on the Droplet. + _No defaults_ +* **User on Droplet - Default Password:** + Default password for the sudo user being created on the Droplet. + _No defaults_ + _Do not forget to change it after the first login!_ +### Droplet specs +You can specify the droplet size and specs when creating a new droplet. +Simply list it after the droplet name: +``` +ansible-droplet create my_droplet SPEC_NAME +``` +For now, only 3 specs are supported<sup>[2](#f2)</sup>: +* **Micro** + * size: "512mb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +* **Mini** + * size: "1gb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +* **Power** + * size: "4gb" + * region: "fra1" + * image: "ubuntu-16-04-x64" + * swap: "4GiB" +The list of specification are stored on the repository: [Droplet Specs](https://github.com/FlorianKempenich/ansible-droplet/tree/master/ansible_droplet/ansible/droplet_specs) +### Ansible Droplet Inventory +It is possible to access the Droplet from any other ansible playbook via its **name**: + - hosts: my_droplet +For that purpose the file `~/.ansible-droplet-inventory` is created. +`~/.ansible-droplet-inventory` contains ansible inventory entries for each Droplet created with the `ansible-droplet` tool. +To use the droplet in a playbook, either: +* Point your _inventory_ to the `~/.ansible-droplet-inventory` file +* Point your _inventory_ to a directory containing a symlink to the `~/.ansible-droplet-inventory` file +From there you can reference the Droplet directly by name. +### Multiple configuration - Multiple Digital Ocean accounts +You can use multiple configurations to support: +* Multiple **DigitalOcean accounts** +* Multiple **SHH Keys** +* Multiple **default user/password** +The configuration generated by `ansible-droplet config` is kept in the installation directory. + +%prep +%autosetup -n ansible-droplet-0.5.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-ansible-droplet -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.0-1 +- Package Spec generated @@ -0,0 +1 @@ +9af4c37e65c8058f4d06bf2f7af18ed0 ansible-droplet-0.5.0.tar.gz |