0
내 GCP 환경을위한 최소 플랫폼 관리 도구로 Fabric을 실험하기 시작했습니다. 실험하고자하는 테스트 사례는 GCE API에서 호스트 목록을 가져 와서 동적 호스트 목록을 설정하는 것입니다. 이 목록을 토대로 간단한 최소 보안 업데이트를 적용하고 싶습니다. 이 프로세스는 운영 체제에 따라 다릅니다.Fabric - OS 유형 감지 및 명령 실행
# gets running hosts in a single project across all zones
def ag_get_host():
request = compute.instances().aggregatedList(project=project)
response = request.execute()
env.hosts = []
for zone, instances in response['items'].items():
for host in instances.get("instances", []):
if host['status'] == 'RUNNING':
env.hosts.append(host['name'])
# If redhat, run yum ; if ubuntu, run apt-get
def sec_update():
if 'redhat' in platform.platform().lower():
sudo('echo 3 > /proc/sys/vm/drop_caches')
sudo('yum update yum -y')
sudo('yum update-minimal --security -y')
elif 'ubuntu' in platform.platform().lower():
sudo('apt-get install unattended-upgrades')
sudo('sudo unattended-upgrades –d')
OS 릴리스 세부 정보를 얻는 데 필요한 논리를 작성하는 데 어려움이 있습니다. platform.platform()은 대상 컴퓨터가 아닌 호스트 OS 세부 정보를 가져옵니다.
from fabric.api import task, sudo
def get_platform():
x = sudo("python -c 'import platform; print(platform.platform())'")
if x.failed:
raise Exception("Python not installed")
else:
return x
@task
def my_task():
print("platform", get_platform())
이 요구 사항은 대상 상자에 파이썬을 설치 한 것입니다주의 :
왜 sudo가 필요한지 잘 모르겠습니다. 또한'uname -s'를 실행하면 OS 유형도 알 수 있습니다 (예 : Linux 또는 Darwin). –