'매개변수'에 해당되는 글 2건

  1. 2016.08.18 Puppet Part 4
  2. 2014.05.09 Python 한 걸음 내딛기 : Part 4 [함수-2]
DevOps/Automation2016.08.18 14:46

Today key : Puppet, 퍼펫, manifest, autumation, 자동화, class, 클래스, 상속, inherits, 매개변수

 

개인적으로 정리하는 Puppet의 4번째 포스팅입니다.

이번 포스팅은 Puppet의 Manifest를 모듈화 하여 작성하기 위한 방법인 class 작성 방법과 예제입니다.

기존의 OOP에서처럼, 모듈화하고, 코드의 재사용 등 기존의 OOP의 class와 동일한 쓰임새로 사용된다고 보면 될 것 같습니다.

혹시 잘못되거나 수정해야 할 부분이 있으면 덧글 부탁드립니다! ^^

 


 

Puppet Part 4

 

Puppet  Class

   •manifest 자주 사용되는 내용들은 별도의 Class 구성하여 사용 가능.

   별도의 Class 구성하여 서로 다른 Environment에서 동일한 manifest 작성하지 않아도 .

 

Puppet Class 정의

   •class 키워드 사용

   •class 지정

   class 매개변수 지정 가능.

         - 매개변수 지정방법 : ( Data_Type $변수 = Default_Value)

             * Datatype 선언은 필수는 아니면, Default로는 any

   다른 class 상속하는 경우에 Inherits 함께 상속받을 클래스 입력

   하나 이상의 Resource 대한 Puppet Code 작성

 

 

Class 사용법

   동일한 Manifest 작성하거나, 혹은 별개의 Manifest 작성

   사용하고자 하는 manifest에서 include class 으로 사용 가능

Dev.pp

mainDev.pp

class osver {

     file { '/zigi/osversion':

     content => $osversion,

   }

node 'agent1' {

   include osver

}

 

 

Class 작성 예제

 

Class 작성 예제1

class blog {

     file { '/zigi/blog':

       content => 'zigispace.net',

       }

       file {'/zigi/nickname':

          content => 'no-name',

       }

 }

 

 

Class 작성 예제2 - 상속

class Info inherits Blog {

     file ['/zigi/nickname']{

       content => 'ZIGI',

   }

      file { '/zigi/mail':

         content => 'zigi@zigispace.net',

     }

} 

Class 상속 받는 경우에는 상속하는 Class 동일한 Resource Title 중복이 되는 경우에는

   해당 값을 Override 있음.

 

 

Class 작성 예제2-1 - 상속 (오류)

class Info inherits Blog {

     file {'/zigi/nickname':

       content => 'ZIGI',

   }

      file { '/zigi/mail':

         content => 'zigi@zigispace.net',

     }

} 

Error : Could not retrieve catalog from remote server: Error 400 on SERVER: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration: File[/zigi/blog] is already declared in file /etc/puppetlabs/code/environments/dev/manifests/ss.pp:2; cannot redeclare at /etc/puppetlabs/code/environments/dev/manifests/ss.pp:12 at /etc/puppetlabs/code/environments/dev/manifests/ss.pp:12:3 on node agent1.puppet.local

, 상속 시의 Overrding하는 Title 기존 선언하는 방식과 동일하게 선언하게 되면, 중복선언으로 에러가 발생하게 . 

관련 Manifest 작성은 추후 포스팅에서 다뤄질 예정입니다.

 

 

 

Class 작성 예제3 - 상속 2

class apache {

  service {'apache':

    require => Package['httpd'],

  }

}

 

class apache::ssl inherits apache {

  Service['apache'] {

    require +> [ File['apache.pem'], File['httpd.conf'] ],

  }

}

Class 상속 받는 경우에는 상속하는 Class 동일한 Resource Title 특정 속성 값을

   추가하고자 때에는 Attribute => value 대신에 Attribute +> value 표기하면 된다. (=> +>)

 

Class 작성 예제4 - 매개변수 사용

class nginx  (String $ver = 'latest') {

     package { 'nginx':

       ensure => $ver,

   }

Posted by 네떡지기
프로그래밍/Python2014.05.09 00:50

 

Python 한 걸음 내딛기, 4번째 포스팅입니다.

일주일에 한개씩은 꼭! 지키려고 하다보니

이번에는 분량이 많지는 않습니다.

이번주 네전따 세미나가 있을 예정이라,

오늘 이외에는 올릴 수가 없을 듯 하여! ^^

짧게나마 이렇게 포스팅합니다.

다음 포스팅은 객체지향이 되지 않을까 싶습니다! ^^;

 

 


함수의 매개변수

- 함수를 호출할 때, 함수로 전달해주는 값으로 함수 처리 시에 필요한 내용을 적절하게 매개변수로 전달하여
사용할 수 있다.

- 파이썬에서는 '기본' , '키워드', '가변 리스트', '미정의 키워드' 에 대한 별도의 매개변수 전달 모드가
가능하며 각각의 사용법은 아래에서 알아보기로 한다.

   

기본 매개변수

- 함수 호출 시, 별도의 매개변수 값을 전달하지 않을 경우에 Default 값을 갖도록 함수 선언 시에 매개변수
별로 Default 값을 지정한 것이다.

- 이 경우에 함수를 별도의 매개변수를 전달하지 않으며, Default로 설정된 값으로 함수 내부에서 사용되며
만약 매개변수에 값을 전달할 경우에는 전달한 값으로 함수 내부에서 사용된다.

   

함수2 예제-1

함수2 예제-1 결과

def ParameterTest1(manager="네떡지기",vendor="cisco"):

        print(vendor,"장비 관리 : ",manager)

   

ParameterTest1()

ParameterTest1("고재성")

ParameterTest1("고재성","Arista")

cisco 장비 관리 : 네떡지기

cisco 장비 관리 : 고재성

Arista 장비 관리 : 고재성

   

   

   

키워드 매개변수    

- 함수 호출 시 전달되는 매개변수는 순서대로 함수의 선언 시에 순서와 동일하게 해당 값으로 매칭되어 전달
되지만, 이러한 순서와 상관없이 호출 시에 직접 매개변수의 키워드를 지정하여 전달할 수 있다.

   

함수2 예제-2

함수2 예제-2 결과

def ParameterTest2(manager,vendor):

       print(vendor,"장비 관리 : ",manager)

   

ParameterTest2(vendor="Fortinet",manager="고재성")

Fortinet 장비 관리 : 고재성

   

   

가변리스트 매개변수

- 함수 호출 시 전달되는 매개변수는 선언 시에 정의된 개수만큼만 전달을 할 수 있다.
하지만, 호출 시점마다 다른 개수의 매개변수를 전달해야 하는 경우가 있다. 이 경우에는 * 를 매개변수
앞에 써주게 되면 전달되는 매개변수를 튜플 형태로 전달을 받기 때문에 원하는 개수만큼 매개변수를
전달할 수 있게 된다.

함수2 예제-3

함수2 예제-3 결과

def ParameterTest3(manager, *vendors):

for ven in vendors:

       print("Manager-",manager,":", ven)

   

ParameterTest3("네떡지기","Cisco","Arista")

print("--------------------------")

ParameterTest3("고재성","DELL","HP","Juniper","Alteon")

Manager- 네떡지기 : Cisco

Manager- 네떡지기 : Arista

--------------------------

Manager- 고재성 : DELL

Manager- 고재성 : HP

Manager- 고재성 : Juniper

Manager- 고재성 : Alteon

 

함수2 예제-3 : Type확인

함수2 예제-3 :Type확인 결과

def ParameterTest3_Check(*vendors):

       print(type(vendors))

   

ParameterTest3_Check("Cisco","Arista")

<class 'tuple'>

   

   

미정의 키워드 매개변수

- 함수 호출 시 매개변수를 Data type중의 사전형식으로 매개변수를 전달하는 방법으로, 매개변수 앞에
** 를 써주게 되면 전달되는 매개변수를 사전형식으로 전달 할 수 있게 된다.

- 가변리스트 매개변수와 마찬가지로 원하는 개수를 전달할 수 있다.

   

함수2 예제-4

def ParameterTest4(cmd,**isps):

for isp in isps.keys():

       print("",isp,cmd,"Test")

       print(cmd,isps[isp])

   

ParameterTest4("ping",KT="168.126.63.1",LG="164.124.107.9",SK="210.220.163.82")

함수2 예제-4 결과

SK ping Test

ping 210.220.163.82

KT ping Test

ping 168.126.63.1

LG ping Test

ping 164.124.107.9

 

   

Posted by 네떡지기

티스토리 툴바