Compare commits
10 Commits
0cd0a71cb5
...
52ab9a6cb9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52ab9a6cb9 | ||
|
|
9dd769e6b8 | ||
|
|
03c8025a68 | ||
|
|
ae84fdc417 | ||
| 803f4bd5d8 | |||
| 072e82fae1 | |||
| 3dd31b0489 | |||
| cae29f1272 | |||
| bf0532f293 | |||
| 09f0660299 |
2
.github/ansible-code-bot.yml
vendored
Normal file
2
.github/ansible-code-bot.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
schedule:
|
||||
interval: weekly
|
||||
29
01_awx.yml
Normal file
29
01_awx.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
- name: Clean up AWX
|
||||
hosts: localhost
|
||||
connection: local
|
||||
|
||||
tasks:
|
||||
- name: Remove Demo Template
|
||||
awx.awx.job_template:
|
||||
name: Demo Job Template
|
||||
organization: Default
|
||||
state: absent
|
||||
|
||||
- name: Remove Demo credential
|
||||
awx.awx.credential:
|
||||
name: Demo Credential
|
||||
credential_type: Machine
|
||||
state: absent
|
||||
|
||||
- name: Remove Demo inventory
|
||||
awx.awx.inventory:
|
||||
name: Demo Inventory
|
||||
organization: Default
|
||||
state: absent
|
||||
|
||||
- name: Remove Demo project
|
||||
awx.awx.project:
|
||||
name: Demo Project
|
||||
organization: Default
|
||||
state: absent
|
||||
@@ -7,11 +7,11 @@
|
||||
tasks:
|
||||
- name: Create resource group
|
||||
azure.azcollection.azure_rm_resourcegroup:
|
||||
name: "webserver_{{ user }}"
|
||||
name: webserver_{{ user }}
|
||||
location: northeurope
|
||||
tags:
|
||||
solution: "webserver_{{ user }}"
|
||||
delete: ansibletraining
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
register: rg
|
||||
- name: Show RG
|
||||
ansible.builtin.debug:
|
||||
|
||||
18
01_azure_tower.yml
Normal file
18
01_azure_tower.yml
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
- name: Azure Create RG
|
||||
hosts: localhost
|
||||
connection: local
|
||||
vars:
|
||||
user: alex
|
||||
tasks:
|
||||
- name: Create resource group
|
||||
azure.azcollection.azure_rm_resourcegroup:
|
||||
name: webserver_{{ user }}
|
||||
location: northeurope
|
||||
tags:
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
register: rg
|
||||
- name: Show RG
|
||||
ansible.builtin.debug:
|
||||
var: rg
|
||||
@@ -7,12 +7,10 @@
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ ansible_facts }}"
|
||||
|
||||
|
||||
- name: Debug Facts Hostname - Unsafe Text
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ ansible_facts['nodename'] }}"
|
||||
|
||||
|
||||
- name: Debug Facts ipv4 - List
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ ansible_facts['all_ipv4_addresses'][0] }}"
|
||||
|
||||
@@ -8,8 +8,7 @@
|
||||
ansible.builtin.file:
|
||||
path: /root/testfile.txt
|
||||
state: touch
|
||||
mode: '0755'
|
||||
|
||||
mode: "0755"
|
||||
|
||||
- name: Add line in file
|
||||
ansible.builtin.lineinfile:
|
||||
|
||||
10
01_loop.yml
10
01_loop.yml
@@ -19,8 +19,8 @@
|
||||
name: "{{ item.name }}"
|
||||
group: "{{ item.groups }}"
|
||||
loop:
|
||||
- { name: 'homer', groups: 'Developers' }
|
||||
- { name: 'bart', groups: 'It' }
|
||||
- { name: 'lisa', groups: 'Management' }
|
||||
- { name: 'ned', groups: 'Finance' }
|
||||
- { name: 'moe', groups: 'Developers' }
|
||||
- { name: homer, groups: Developers }
|
||||
- { name: bart, groups: It }
|
||||
- { name: lisa, groups: Management }
|
||||
- { name: ned, groups: Finance }
|
||||
- { name: moe, groups: Developers }
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
become: true
|
||||
|
||||
roles:
|
||||
- jesperberth.el_httpd
|
||||
- jesperberth.el_httpd
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
ansible.builtin.get_url:
|
||||
url: https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip
|
||||
dest: ~/awscliv2.zip
|
||||
mode: '0700'
|
||||
mode: "0700"
|
||||
when: not awsfile.stat.exists
|
||||
|
||||
- name: Unzip aws-cli
|
||||
|
||||
@@ -41,13 +41,12 @@
|
||||
rescue:
|
||||
- name: Print when errors
|
||||
ansible.builtin.debug:
|
||||
msg: 'There is an error in this block)'
|
||||
msg: There is an error in this block)
|
||||
|
||||
always:
|
||||
- name: Always do this
|
||||
ansible.builtin.debug:
|
||||
msg: "Will always run"
|
||||
|
||||
msg: Will always run
|
||||
|
||||
- name: Configure firewall
|
||||
ansible.posix.firewalld:
|
||||
@@ -60,7 +59,6 @@
|
||||
- firewall
|
||||
- config
|
||||
|
||||
|
||||
handlers:
|
||||
- name: Firewall reload
|
||||
ansible.builtin.systemd:
|
||||
|
||||
42
01_webserver_azure.yml
Normal file
42
01_webserver_azure.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
- name: Configure Webserver
|
||||
hosts: tag_solution_webserver_alex
|
||||
become: true
|
||||
vars:
|
||||
websiteheader: Ansible Playbook
|
||||
websiteauthor: Alex
|
||||
|
||||
tasks:
|
||||
- name: Install Apache
|
||||
ansible.builtin.dnf:
|
||||
name: httpd
|
||||
state: present
|
||||
|
||||
- name: Enable Apache
|
||||
ansible.builtin.systemd:
|
||||
name: httpd
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- name: Allow http in firewall
|
||||
ansible.posix.firewalld:
|
||||
service: http
|
||||
permanent: true
|
||||
state: enabled
|
||||
immediate: true
|
||||
notify:
|
||||
- Reload firewall
|
||||
|
||||
- name: Add index.html
|
||||
ansible.builtin.template:
|
||||
src: index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
|
||||
handlers:
|
||||
- name: Reload firewall
|
||||
ansible.builtin.service:
|
||||
name: firewalld
|
||||
state: reloaded
|
||||
39
01_webserver_azure_tower.yml
Normal file
39
01_webserver_azure_tower.yml
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
- name: Configure Webserver
|
||||
hosts: tag_solution_webserver_alex
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
- name: Install Apache
|
||||
ansible.builtin.dnf:
|
||||
name: httpd
|
||||
state: present
|
||||
|
||||
- name: Enable Apache
|
||||
ansible.builtin.systemd:
|
||||
name: httpd
|
||||
enabled: true
|
||||
state: started
|
||||
|
||||
- name: Allow http in firewall
|
||||
ansible.posix.firewalld:
|
||||
service: http
|
||||
permanent: true
|
||||
state: enabled
|
||||
immediate: true
|
||||
notify:
|
||||
- Reload firewall
|
||||
|
||||
- name: Add index.html
|
||||
ansible.builtin.template:
|
||||
src: index.html.j2
|
||||
dest: /var/www/html/index.html
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
|
||||
handlers:
|
||||
- name: Reload firewall
|
||||
ansible.builtin.service:
|
||||
name: firewalld
|
||||
state: reloaded
|
||||
89
02_azure.yml
89
02_azure.yml
@@ -5,10 +5,10 @@
|
||||
vars:
|
||||
user: alex
|
||||
location: northeurope
|
||||
virtual_network_name: "webserver_{{ user }}"
|
||||
virtual_network_name: webserver_{{ user }}
|
||||
subnet: Webserver
|
||||
resource_group: "webserver_{{ user }}"
|
||||
domain_sub: "domain{{ user }}"
|
||||
resource_group: webserver_{{ user }}
|
||||
domain_sub: domain{{ user }}
|
||||
ssh_public_key: "{{lookup('file', '~/.ssh/id_rsa.pub') }}"
|
||||
|
||||
tasks:
|
||||
@@ -16,76 +16,75 @@
|
||||
azure.azcollection.azure_rm_virtualnetwork:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ virtual_network_name }}"
|
||||
address_prefixes_cidr: "10.99.0.0/16"
|
||||
address_prefixes_cidr: 10.99.0.0/16
|
||||
tags:
|
||||
solution: "webserver_{{ user }}"
|
||||
delete: ansibletraining
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create a subnet
|
||||
azure.azcollection.azure_rm_subnet:
|
||||
resource_group: "{{ resource_group }}"
|
||||
virtual_network_name: "{{ virtual_network_name }}"
|
||||
name: "{{ subnet }}"
|
||||
address_prefix_cidr: "10.99.0.0/24"
|
||||
|
||||
address_prefix_cidr: 10.99.0.0/24
|
||||
|
||||
- name: Create a public ip address for webserver
|
||||
azure_rm_publicipaddress:
|
||||
register: webserver_pub_ip
|
||||
azure.azcollection.azure_rm_publicipaddress:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: public_ip_webserver
|
||||
allocation_method: static
|
||||
domain_name: "webserver{{ domain_sub }}"
|
||||
domain_name: webserver{{ domain_sub }}
|
||||
tags:
|
||||
solution: "webserver_{{ user }}"
|
||||
delete: ansibletraining
|
||||
register: webserver_pub_ip
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create Security Group for webserver
|
||||
azure_rm_securitygroup:
|
||||
azure.azcollection.azure_rm_securitygroup:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "webserver_securitygroup"
|
||||
name: webserver_securitygroup
|
||||
purge_rules: true
|
||||
rules:
|
||||
- name: Allow_SSH
|
||||
protocol: Tcp
|
||||
destination_port_range: 22
|
||||
access: Allow
|
||||
priority: 100
|
||||
direction: Inbound
|
||||
- name: Allow_HTTP
|
||||
protocol: Tcp
|
||||
destination_port_range: 80
|
||||
access: Allow
|
||||
priority: 101
|
||||
direction: Inbound
|
||||
- name: Allow_SSH
|
||||
protocol: Tcp
|
||||
destination_port_range: 22
|
||||
access: Allow
|
||||
priority: 100
|
||||
direction: Inbound
|
||||
- name: Allow_HTTP
|
||||
protocol: Tcp
|
||||
destination_port_range: 80
|
||||
access: Allow
|
||||
priority: 101
|
||||
direction: Inbound
|
||||
tags:
|
||||
solution: "webserver_{{ user }}"
|
||||
delete: ansibletraining
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create a network interface for webserver
|
||||
azure_rm_networkinterface:
|
||||
name: "webserver_nic01"
|
||||
azure.azcollection.azure_rm_networkinterface:
|
||||
name: webserver_nic01
|
||||
resource_group: "{{ resource_group }}"
|
||||
virtual_network: "{{ virtual_network_name }}"
|
||||
subnet_name: "{{ subnet }}"
|
||||
security_group: "webserver_securitygroup"
|
||||
security_group: webserver_securitygroup
|
||||
ip_configurations:
|
||||
- name: "webserver_nic01_ipconfig"
|
||||
public_ip_address_name: "public_ip_webserver"
|
||||
primary: True
|
||||
- name: webserver_nic01_ipconfig
|
||||
public_ip_address_name: public_ip_webserver
|
||||
primary: true
|
||||
tags:
|
||||
solution: "webserver_{{ user }}"
|
||||
delete: ansibletraining
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create a VM webserver
|
||||
azure_rm_virtualmachine:
|
||||
azure.azcollection.azure_rm_virtualmachine:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "webserver"
|
||||
name: webserver
|
||||
os_type: Linux
|
||||
admin_username: "{{ user }}"
|
||||
ssh_password_enabled: false
|
||||
ssh_public_keys:
|
||||
- path: "/home/{{ user }}/.ssh/authorized_keys"
|
||||
- path: /home/{{ user }}/.ssh/authorized_keys
|
||||
key_data: "{{ ssh_public_key }}"
|
||||
managed_disk_type: Standard_LRS
|
||||
state: present
|
||||
@@ -95,13 +94,13 @@
|
||||
sku: "8_4"
|
||||
version: latest
|
||||
vm_size: Standard_A1_v2
|
||||
network_interfaces: "webserver_nic01"
|
||||
network_interfaces: webserver_nic01
|
||||
tags:
|
||||
solution: "webserver_{{ user }}"
|
||||
delete: ansibletraining
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Show webserver public ip
|
||||
debug:
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ webserver_pub_ip.state.ip_address }}"
|
||||
|
||||
- name: Wait for ssh on webserver
|
||||
@@ -112,4 +111,4 @@
|
||||
timeout: 600
|
||||
|
||||
- name: Add webserver to ssh known_hosts
|
||||
shell: "ssh-keyscan -t ecdsa {{ webserver_pub_ip.state.ip_address }} >> /home/{{ user }}/.ssh/known_hosts"
|
||||
ansible.builtin.shell: ssh-keyscan -t ecdsa {{ webserver_pub_ip.state.ip_address }} >> /home/{{ user }}/.ssh/known_hosts
|
||||
|
||||
110
02_azure_tower.yml
Normal file
110
02_azure_tower.yml
Normal file
@@ -0,0 +1,110 @@
|
||||
---
|
||||
- name: Azure Webserver
|
||||
hosts: localhost
|
||||
connection: local
|
||||
vars:
|
||||
user: alex
|
||||
location: northeurope
|
||||
virtual_network_name: webserver_{{ user }}
|
||||
subnet: Webserver
|
||||
resource_group: webserver_{{ user }}
|
||||
domain_sub: domain{{ user }}
|
||||
|
||||
tasks:
|
||||
- name: Create a virtual network
|
||||
azure.azcollection.azure_rm_virtualnetwork:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: "{{ virtual_network_name }}"
|
||||
address_prefixes_cidr: 10.99.0.0/16
|
||||
tags:
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create a subnet
|
||||
azure.azcollection.azure_rm_subnet:
|
||||
resource_group: "{{ resource_group }}"
|
||||
virtual_network_name: "{{ virtual_network_name }}"
|
||||
name: "{{ subnet }}"
|
||||
address_prefix_cidr: 10.99.0.0/24
|
||||
|
||||
- name: Create a public ip address for webserver
|
||||
register: webserver_pub_ip
|
||||
azure.azcollection.azure_rm_publicipaddress:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: public_ip_webserver
|
||||
allocation_method: static
|
||||
domain_name: webserver{{ domain_sub }}
|
||||
tags:
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create Security Group for webserver
|
||||
azure.azcollection.azure_rm_securitygroup:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: webserver_securitygroup
|
||||
purge_rules: true
|
||||
rules:
|
||||
- name: Allow_SSH
|
||||
protocol: Tcp
|
||||
destination_port_range: 22
|
||||
access: Allow
|
||||
priority: 100
|
||||
direction: Inbound
|
||||
- name: Allow_HTTP
|
||||
protocol: Tcp
|
||||
destination_port_range: 80
|
||||
access: Allow
|
||||
priority: 101
|
||||
direction: Inbound
|
||||
tags:
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create a network interface for webserver
|
||||
azure.azcollection.azure_rm_networkinterface:
|
||||
name: webserver_nic01
|
||||
resource_group: "{{ resource_group }}"
|
||||
virtual_network: "{{ virtual_network_name }}"
|
||||
subnet_name: "{{ subnet }}"
|
||||
security_group: webserver_securitygroup
|
||||
ip_configurations:
|
||||
- name: webserver_nic01_ipconfig
|
||||
public_ip_address_name: public_ip_webserver
|
||||
primary: true
|
||||
tags:
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Create a VM webserver
|
||||
azure.azcollection.azure_rm_virtualmachine:
|
||||
resource_group: "{{ resource_group }}"
|
||||
name: webserver
|
||||
os_type: Linux
|
||||
admin_username: "{{ user }}"
|
||||
ssh_password_enabled: false
|
||||
ssh_public_keys:
|
||||
- path: /home/{{ user }}/.ssh/authorized_keys
|
||||
key_data: "{{ ssh_public_key }}"
|
||||
managed_disk_type: Standard_LRS
|
||||
state: present
|
||||
image:
|
||||
offer: RHEL
|
||||
publisher: RedHat
|
||||
sku: "8_4"
|
||||
version: latest
|
||||
vm_size: Standard_A1_v2
|
||||
network_interfaces: webserver_nic01
|
||||
tags:
|
||||
solution: webserver_{{ user }}
|
||||
delete: ansibletraining
|
||||
|
||||
- name: Show webserver public ip
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ webserver_pub_ip.state.ip_address }}"
|
||||
|
||||
- name: Wait for ssh on webserver
|
||||
ansible.builtin.wait_for:
|
||||
host: "{{ webserver_pub_ip.state.ip_address }}"
|
||||
port: 22
|
||||
delay: 10
|
||||
timeout: 600
|
||||
@@ -19,4 +19,4 @@
|
||||
password: P@ssw0rd!
|
||||
state: present
|
||||
groups:
|
||||
- corp
|
||||
- corp
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
ansible.builtin.file:
|
||||
path: /mnt/resource/
|
||||
state: directory
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
|
||||
- name: Download files
|
||||
ansible.builtin.get_url:
|
||||
url: "{{ item }}"
|
||||
dest: /mnt/resource/
|
||||
mode: '0600'
|
||||
mode: "0600"
|
||||
loop:
|
||||
- https://github.com/git-for-windows/git/releases/download/v2.30.0.windows.1/Git-2.30.0-64-bit.exe
|
||||
- https://www.python.org/ftp/python/3.8.7/python-3.8.7-embed-amd64.zip
|
||||
|
||||
@@ -13,4 +13,4 @@
|
||||
dest: /var/www/html/index.php
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
mode: "0755"
|
||||
|
||||
14
03_azure.yml
Normal file
14
03_azure.yml
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
- name: Remove Webserver
|
||||
hosts: localhost
|
||||
connection: local
|
||||
vars:
|
||||
user: alex
|
||||
|
||||
tasks:
|
||||
- name: Delete resource group
|
||||
azure.azcollection.azure_rm_resourcegroup:
|
||||
name: webserver_{{ user }}
|
||||
location: northeurope
|
||||
state: absent
|
||||
force_delete_nonempty: true
|
||||
13
index.html.j2
Normal file
13
index.html.j2
Normal file
@@ -0,0 +1,13 @@
|
||||
<html>
|
||||
<header>
|
||||
<title>{{ websiteheader }}</title></header>
|
||||
|
||||
<body>
|
||||
<h1>Welcome to {{ websiteheader }}</h1>
|
||||
|
||||
<h3>This site was created with Ansible by {{ websiteauthor }}
|
||||
|
||||
<p>Hosted on {{ inventory_hostname }} running {{ ansible_facts['os_family'] }}<p>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
# defaults file for webserver
|
||||
package:
|
||||
- httpd
|
||||
- mod_ssl
|
||||
- openssl
|
||||
- php
|
||||
- php-gd
|
||||
- php-mbstring
|
||||
- httpd
|
||||
- mod_ssl
|
||||
- openssl
|
||||
- php
|
||||
- php-gd
|
||||
- php-mbstring
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
galaxy_info:
|
||||
author: Alex
|
||||
description: a role for installing a webserver
|
||||
@@ -44,12 +45,12 @@ galaxy_info:
|
||||
- "8"
|
||||
|
||||
galaxy_tags: []
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
# List tags for your role here, one per line. A tag is a keyword that describes
|
||||
# and categorizes the role. Users find roles by searching for tags. Be sure to
|
||||
# remove the '[]' above, if you add tags to this list.
|
||||
#
|
||||
# NOTE: A tag is limited to a single word comprised of alphanumeric characters.
|
||||
# Maximum 20 tags per role.
|
||||
|
||||
dependencies: []
|
||||
# List your role dependencies here, one per line. Be sure to remove the '[]' above,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
---
|
||||
plugin: azure_rm
|
||||
auth_source: auto
|
||||
include_vm_resource_groups:
|
||||
- '*'
|
||||
- "*"
|
||||
keyed_groups:
|
||||
- prefix: tag
|
||||
key: tags
|
||||
|
||||
Reference in New Issue
Block a user