Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cyber-sandbox-creator
Manage
Activity
Members
Labels
Plan
Issues
10
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
MUNI-KYPO-CSC
cyber-sandbox-creator
Commits
da4a0354
Commit
da4a0354
authored
4 years ago
by
Attila Farkas
Browse files
Options
Downloads
Patches
Plain Diff
copy user ansible files if the user provide them
parent
999d1d42
No related branches found
No related tags found
1 merge request
!8
Resolve "Add optional parameter for path to provisioning directory provided by user"
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
create.py
+1
-1
1 addition, 1 deletion
create.py
modules/ansible_generator.py
+15
-4
15 additions, 4 deletions
modules/ansible_generator.py
modules/file_manager.py
+11
-5
11 additions, 5 deletions
modules/file_manager.py
with
27 additions
and
10 deletions
create.py
+
1
−
1
View file @
da4a0354
...
@@ -18,7 +18,7 @@ device_definitions = open_yaml(INPUT_FILE_NAME)
...
@@ -18,7 +18,7 @@ device_definitions = open_yaml(INPUT_FILE_NAME)
validate_device_definitions
(
device_definitions
)
validate_device_definitions
(
device_definitions
)
preprocess
(
device_definitions
,
FLAGS
)
preprocess
(
device_definitions
,
FLAGS
)
prepare_directories
(
device_definitions
)
prepare_directories
(
device_definitions
,
FLAGS
)
generate_vagrantfile
(
device_definitions
,
FLAGS
)
generate_vagrantfile
(
device_definitions
,
FLAGS
)
generate_playbooks
(
device_definitions
,
FLAGS
)
generate_playbooks
(
device_definitions
,
FLAGS
)
...
...
This diff is collapsed.
Click to expand it.
modules/ansible_generator.py
+
15
−
4
View file @
da4a0354
"""
Contain functions for ansible file generation.
"""
"""
Contain functions for ansible file generation.
"""
from
modules.file_manager
import
generate_file
,
copy_template_file
from
modules.file_manager
import
generate_file
,
copy_template_file
,
\
copy_user_provisioning_dir
from
modules.ansible_vars_generator
import
generate_ansible_vars
from
modules.ansible_vars_generator
import
generate_ansible_vars
from
conf.border_router
import
BORDER_ROUTER_NAME
from
conf.border_router
import
BORDER_ROUTER_NAME
...
@@ -27,8 +28,9 @@ def _create_config_playbooks(input_definitions, flags):
...
@@ -27,8 +28,9 @@ def _create_config_playbooks(input_definitions, flags):
device
[
"
name
"
]
+
"
/tasks/main.yml
"
)
device
[
"
name
"
]
+
"
/tasks/main.yml
"
)
def
_create_user_playbooks
(
input_definitions
):
def
_generate_user_playbooks
(
input_definitions
):
"""
Generate template playbooks and roles for users.
"""
"""
Generate example user playbooks.
"""
copy_template_file
(
"
playbook
"
,
"
provisioning/playbook.yml
"
)
copy_template_file
(
"
playbook
"
,
"
provisioning/playbook.yml
"
)
if
input_definitions
[
"
hosts
"
]:
if
input_definitions
[
"
hosts
"
]:
copy_template_file
(
"
user_hosts
"
,
copy_template_file
(
"
user_hosts
"
,
...
@@ -48,6 +50,15 @@ def _create_user_playbooks(input_definitions):
...
@@ -48,6 +50,15 @@ def _create_user_playbooks(input_definitions):
"
/tasks/main.yml
"
,
router_name
=
router
[
"
name
"
])
"
/tasks/main.yml
"
,
router_name
=
router
[
"
name
"
])
def
_create_user_playbooks
(
input_definitions
,
flags
):
"""
Copy or generate template playbooks and roles for users.
"""
if
"
provisioning_dir
"
in
flags
and
flags
[
"
provisioning_dir
"
]:
copy_user_provisioning_dir
(
flags
[
"
provisioning_dir
"
])
else
:
_generate_user_playbooks
(
input_definitions
)
def
generate_playbooks
(
input_definitions
,
flags
):
def
generate_playbooks
(
input_definitions
,
flags
):
"""
Generate ansible vars and playbooks.
"""
Generate ansible vars and playbooks.
...
@@ -56,4 +67,4 @@ def generate_playbooks(input_definitions, flags):
...
@@ -56,4 +67,4 @@ def generate_playbooks(input_definitions, flags):
"""
"""
generate_ansible_vars
(
input_definitions
,
flags
)
generate_ansible_vars
(
input_definitions
,
flags
)
_create_config_playbooks
(
input_definitions
,
flags
)
_create_config_playbooks
(
input_definitions
,
flags
)
_create_user_playbooks
(
input_definitions
)
_create_user_playbooks
(
input_definitions
,
flags
)
This diff is collapsed.
Click to expand it.
modules/file_manager.py
+
11
−
5
View file @
da4a0354
...
@@ -81,7 +81,7 @@ def _load_template(template_name):
...
@@ -81,7 +81,7 @@ def _load_template(template_name):
def
_copy_directory
(
source
,
destination
):
def
_copy_directory
(
source
,
destination
):
"""
Copy directory recursively form templates dir to the destination.
"""
"""
Copy directory recursively form templates dir to the destination.
"""
try
:
try
:
shutil
.
copytree
(
"
./templates/
"
+
source
,
destination
)
shutil
.
copytree
(
source
,
destination
)
except
OSError
:
except
OSError
:
cleanup_and_exit
(
"
Could not copy directory
"
+
str
(
source
)
+
"
.
"
)
cleanup_and_exit
(
"
Could not copy directory
"
+
str
(
source
)
+
"
.
"
)
...
@@ -124,7 +124,7 @@ def _create_provisioning_directories(directory, device_definitions):
...
@@ -124,7 +124,7 @@ def _create_provisioning_directories(directory, device_definitions):
cleanup_and_exit
(
"
Could not create directories for provisioning.
"
)
cleanup_and_exit
(
"
Could not create directories for provisioning.
"
)
def
prepare_directories
(
device_definitions
):
def
prepare_directories
(
device_definitions
,
flags
):
"""
Prepare the necessary directory structure.
"""
"""
Prepare the necessary directory structure.
"""
_remove_sandbox
()
_remove_sandbox
()
...
@@ -135,14 +135,20 @@ def prepare_directories(device_definitions):
...
@@ -135,14 +135,20 @@ def prepare_directories(device_definitions):
"
.
"
)
"
.
"
)
_create_provisioning_directories
(
"
base_provisioning
"
,
device_definitions
)
_create_provisioning_directories
(
"
base_provisioning
"
,
device_definitions
)
_create_provisioning_directories
(
"
provisioning
"
,
device_definitions
)
if
"
provisioning_dir
"
not
in
flags
or
not
flags
[
"
provisioning_dir
"
]:
_create_provisioning_directories
(
"
provisioning
"
,
device_definitions
)
_copy_directory
(
"
interface
"
,
OUTPUT_DIRECTORY
+
_copy_directory
(
"
./templates/
interface
"
,
OUTPUT_DIRECTORY
+
"
/base_provisioning/roles/interface
"
)
"
/base_provisioning/roles/interface
"
)
_copy_directory
(
"
common
"
,
OUTPUT_DIRECTORY
+
_copy_directory
(
"
./templates/
common
"
,
OUTPUT_DIRECTORY
+
"
/base_provisioning/roles/common
"
)
"
/base_provisioning/roles/common
"
)
def
copy_user_provisioning_dir
(
path
):
"""
Copy provisioning files provided by the user to the correct dir.
"""
_copy_directory
(
path
,
OUTPUT_DIRECTORY
+
"
/provisioning
"
)
def
_remove_sandbox
():
def
_remove_sandbox
():
"""
Remove the existing sandbox.
"""
"""
Remove the existing sandbox.
"""
shutil
.
rmtree
(
OUTPUT_DIRECTORY
,
True
)
shutil
.
rmtree
(
OUTPUT_DIRECTORY
,
True
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment