initial transfer
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
from pyinfra.operations import files, server, python
|
||||
from pyinfra import host, logger
|
||||
import logging
|
||||
|
||||
|
||||
NAME=host.data.SUFFIX
|
||||
EMAIL=host.data.EMAIL
|
||||
ALGORITHM=host.data.ALGORITHM
|
||||
USER=host.data.USER
|
||||
|
||||
# Ensure the .ssh directory exists
|
||||
files.directory(
|
||||
name="Ensure .ssh directory exists",
|
||||
path=f"/home/{USER}/.ssh",
|
||||
present=True,
|
||||
mode=700,
|
||||
user=USER,
|
||||
group=USER,
|
||||
)
|
||||
|
||||
# Generate the SSH keypair
|
||||
server.shell(
|
||||
name=f"Generate SSH key id_{NAME}",
|
||||
commands=[
|
||||
f"ssh-keygen -t {ALGORITHM} -f /home/{USER}/.ssh/id_{NAME} -C '{EMAIL}' -N ''"
|
||||
]
|
||||
)
|
||||
|
||||
# Print the public key
|
||||
result = server.shell(
|
||||
name="Print public key",
|
||||
commands=[f"cat /home/{USER}/.ssh/id_{NAME}.pub"],
|
||||
)
|
||||
|
||||
def callback():
|
||||
# 🔹 Extract and log the key output
|
||||
if result.stdout:
|
||||
logger.info(f"Public Key for {USER}: {result.stdout.strip()}")
|
||||
else:
|
||||
logger.warning(f"No public key found for {USER} at /home/{USER}/.ssh/id_{NAME}.pub")
|
||||
|
||||
python.call(
|
||||
name="Log public key",
|
||||
function=callback,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user