You are on page 1of 34

Mac Configuration Management

at the Los Alamos National Laboratory


!"#$%%&'#(&)*+,#
$-).%/#0121#
+-3&45#01216176189#:.;53#4"-<,#
!
!
!
!
!
!
!
"#$%#&$'((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )#
*+$!,+-..$/0$ ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1#
2%34567!8$.$67&3/((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 9#
:$77&/0!87-%7$4(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( ;#
<-=&6!>?@.$?$/7-7&3/(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( A#
,3/B&05%-7&3/!C-/-0$?$/7 (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )D#
E4#-/6$4!>?@.$?$/7-7&3/(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )F#
G3'!HEIH!5=$=!25@@$7 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1J#
H$==3/=!H$-%/$4 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1D#
EK357!7+$!E57+3% (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 1L#
E@@$/4&M!)N!@5@@$7(=+ (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 9J#
E@@$/4&M!1N!6.$-/,$%7(%K ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( 99#

=%5&)53#><)#-+?%.*#)5%5&,5#

@$6AB#2161C2CC
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#2#

!"#$"%#&'
HI5#@<,#$%&E<,#F&4.<'&%#@&?<)&4<)"#J@$F@K#I&3#&#'553#><)#*5'4)&%#*<'>.D+)&4.<'#
E&'&D5E5'4#<>#'<'6L.'3<M,#*<E-+45),N#@$F@#I&,#4I)55#4<#>.O5#4I<+,&'3#(&*,#&'3#
&'#5P+&%#'+E?5)#<>#@.'+;#?&,53#,",45E,N#HI5#-).E&)"#D<&%#M&,#4<#?5#&?%5#4<#
.'O5'4<)"#&%%#'<'6M.'3<M,#,",45E,#&'3#-&4*I#(*#QR#S#,",45E,N#@$F@#5;&E.'53#&#
'+E?5)#<>#*<EE5)*.&%#&'3#<-5'#,<+)*5#,<%+4.<',#&'3#+%4.E&45%"#,5%5*453#G+--54N#

HI.,#-&-5)#M.%%#3.,*+,,#MI"#M5#*I<,5#G+--54/#I<M#M5#.E-%5E5'453#.4/#&'3#,<E5#
%5,,<',#M5#%5&)'53#&%<'D#4I5#M&"N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#0#

()#'*)+,,#-.#'
:<)#4I5#><%%<M.'D#)5&,<',/#@$F@#I&,#3545)E.'53#4I&4#?5445)#'<'6M.'3<M,#
*<'>.D+)&4.<'#E&'&D5E5'4#M&,#'55353N##

FFR$#$3E.'.,4)&4.O5#G<%.*"#JF$GK#2TN06=#&--%.5,#4<#@$F@/#&'3#4I.,#F$G#)5P+.)5,#
U4I5#,",45E#<M'5)#E+,4#E&.'4&.'#*<'>.D+)&4.<'#*<'4)<%#<O5)#4I5#,",45E#4<#5',+)5#
4I&4#4I5#,5*+).4"#-<,4+)5#<>#4I5#,",45E#.,#'<4#4I)5&45'53#?"#&+4I<).V53#<)#
+'&+4I<).V53#*I&'D5,#4<#,",45E#,<>4M&)5#<)#I&)3M&)5N#2U#W'#&33.4.<'/#4I5#F$GX,#
=<'>.D+)&4.<'#(&'&D5E5'4#>&E.%"#<>#*<'4)<%,0#I&,#&#'+E?5)#<>#)5P+.)5E5'4,#4I&4#
5,,5'4.&%%"#)5P+.)5#E<'.4<).'D#&'3#E&.'45'&'*5#<>#*<'>.D+)&4.<'#,544.'D,N##

$%,</#<O5)#4I5#"5&),#@$F@#I&,#?55'#'<4.>.53#4I)<+DI#&+3.4#>.'3.'D,#4I&4#?5445)#'<'6
L.'3<M,#*<'>.D+)&4.<'#E&'&D5E5'4#.,#'55353N#:<)#L.'3<M,#@$F@#+,5,#R==(#>)<E#
(.*)<,<>4N#:<)#B53#Y&4#Z'45)-).,5#@.'+;#JBYZ@K/#@$F@#+,5,#4I5.)#,&45%%.45#,5)O5)N#
@$F@#,4.%%#I&,#&#,.D'.>.*&'4#'+E?5)#<>#'<'6BYZ@#@.'+;#E&*I.'5,/#&,#M5%%#&,#&#>5M#
R+'#E&*I.'5,N##

@$F@X,#WH#E&'&D5E5'4#35*.353#4I&4#.>#4I5#><%%<M.'D#*).45).&#M&,#E54/#@$F@#M<+%3#
I&O5#,+>>.*.5'4#'<'6L.'3<M,#*<'>.D+)&4.<'#E&'&D5E5'4/#&'3#M<+%3#-)<O.35#?5445)#
WH#,5)O.*5#4<#<+)#'<'6L.'3<M,#+,5),N##
• $?.%.4"#4<#)5-<)4#<'#MI&4#M5#I&O5#<'#4I5#'54M<)[#
• $?.%.4"#4<#)5,-<'3#4<#\>.'3#4I.,#>.%5]#3&4&#*&%%,#
• $?.%.4"#4<#)5-<)4#<'#-&4*I#%5O5%,#&'3#R$^#35>.'.4.<'#3&45,#
• $?.%.4"#><)#>.5%3#45&E,#J<)#*5'4)&%#,5)O.*5,K#4<#5&,.%"#-&4*I#E&*I.'5,##

:<)#4I5#-+)-<,5,#<>#4I.,#-&-5)/#'<'6L.'3<M,#*<'>.D+)&4.<'#E&'&D5E5'4#.,#
)5,4).*453#4<#(&*#QR#SN#

Q+)#*I&%%5'D5#M&,#4<#>.'3#&#,<%+4.<'#4I&4#E54#4I5#&?<O5#*).45).&N#

########################################################
2#F$G#2TN06=#WWW62_#
0#F$G#2TN06=#W^6C`#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#C#

/$01234'5#,#34%0-'
L5#%<<[53#&4#&#'+E?5)#<>#4<<%,/#?<4I#*<EE5)*.&%#<>>64I56,I5%>#J=QHRK#&'3#<-5'#
,<+)*5#,<%+4.<',N#Q+)#*).45).&#M&,#>&.)%"#?&,.*9#
• Y&)3M&)5#.'O5'4<)"#
• R<>4M&)5#W'O5'4<)"#
• R<>4M&)5#&'3#G&4*I#a.,4).?+4.<'#
• &36I<*#,*).-4#5;5*+4.<'#
• a.)5*4#Rb@#&**5,,#4<#3&4&#
• B+',#<'#(&*#QR#S#
• B+',#<'#B53#Y&4#Z'45)-).,5#@.'+;#JBYZ@K#
• B+',#<'#<4I5)#AFWS#&'3#@.'+;#O&).&'4,#

W'.4.&%%"#?+3D54#M&,#'<4#&#E&c<)#*<'*5)'/#&%4I<+DI#4I5#<'6D<.'D#*<,4,d4I5#-5),<''5%#
E<)4D&D5/#.>#"<+#M.%%dM&,#&#*<'*5)'N#L5#&%,<#4<<[#.'4<#&**<+'4#4I5#U?+"#<)#?+.%3U#
.,,+5N#HI5#?+"#<-4.<'#M<+%3#*<,4#E<)5#+->)<'4/#?5#E<)5#>5&4+)5#).*I/#&'3#.,##
4I5<)54.*&%%"#*I5&-5)#.'#4I5#%<'D#)+'N#HI5#?+.%3#<-4.<'#M<+%3#?5#*I5&-#+-#>)<'4/#?+4#
M<+%3#4&[5#E<)5#I+E&'#)5,<+)*5,#4<#&33#>5&4+)5,#&'3#E&'&D5#<O5)#4.E5N##

!"#$%&'()
L5#.35'4.>.53#&#'+E?5)#<>#-)<3+*4,#4I&4#M5#>5%4#M&))&'453#>+)4I5)#5;&E.'&4.<'N#
G%5&,5#'<45#4I&4#4I5#><%%<M.'D#&'&%",.,#.,#?&,53#<'#.'><)E&4.<'#MI5'#M5#3.3#<+)#
,4+3"#J0118KN#G)<3+*4#>5&4+)5,#&'3#-).*.'D#E&"#I&O5#*I&'D53#,.'*5#4I5'N#
• e!QS#
• b+5,4#b(S#
• G+--54#
• *>5'D.'5#
• @$FB5O#
• :.%5L&O5#
• =&,-5)#R+.45#
• B&3E.'3#

67!8'

HI5#e!QS#>)<E#e&*5C#.,#&'#&--%.&'*5#4I&4#*&'#&%,<#?5#)+'#&,#&#
O.)4+&%#&--%.&'*5N#HI5#e!QS#,+--<)4,#BYZ@/#(&*#&'3#L.'3<M,#
&'3#)5P+.)5,#&%E<,4#'<#,546+-#4.E5N#HI5#e!QS#M<+%3#&%%<M#@$F@#
4<#35-%<"#-&*[&D5,#&'3#-<-+%&45#*+,4<E#.'O5'4<)"#>.5%3,#M.4I#E.'.E&%#5>><)4N#HI5#
e!QS#&%,<#.'*%+353#&#)+3.E5'4&)"#.,,+5#4)&*[.'D#E<3+%5#&'3#&#['<M%53D5#?&,5#4<<%N##

########################################################
C#I44-9ffMMMN[&*5N*<E#F<459#<+)#5O&%+&4.<'#<>#e!QS#M&,#?5><)5#a5%%#-+)*I&,53#.4N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#T#

92#:4';+-+.#<#-4'84#-:%0-:'=0$'5;5'

HI5#b+5,4#(&'&D5E5'4#S45',.<',#><)#R(RT#M&,#&%,<#&#O5)"#.'45)5,4.'D#4<<%#4I&4#
D&)'5)53#E+*I#&445'4.<'#>)<E#<+)#5O&%+&4.<'#45&EN#HI.,#4<<%#.,#&'#&336<'#4<#R(R#
011C/#MI.*I#@$F@#&%)5&3"#+,5,#4<#E&'&D5#<+)#L.'3<M,#5'O.)<'E5'4N#HI.,#4<<%#
)+',#<'#(&*#QR#S#&,#M5%%#&,#E&'"#>%&O<),#<>#@.'+;#&'3#AFWSN#L5#I&3#,<E5#*<'*5)',#
4I&4#-+,I53#+,#&M&"#>)<E#4I5#b+5,4#(&'&D5E5'4#S45',.<',#><)#R(RN#HI5#>.),4#M&,#
4".'D#'<'6M.'3<M,#E&'&D5E5'4#4<#R(RN#L5#M5)5#*<'*5)'53#
&?<+4#<+)#&?.%.4"#4<#+-D)&35#<)#+-3&45#4I5#R(R#,5)O5)#&'3#I<M#
b+5,4#(&'&D5E5'4#S45',.<',#><)#R(R#35O5%<-E5'4#E.DI4#%&D#
?5I.'3#R(R#35O5%<-E5'4N#L5#M5)5#&%,<#*<'*5)'53#M.4I#4I5#-5)*5-4.<'#<>#+,.'D#&#
(.*)<,<>4#-)<3+*4#4<#E&'&D5#'<'6L.'3<M,#*<E-+45),N#(&'"#'<'6M.'3<M,#+,5),#
I&O5#&#3.,4)+,4#<>#(.*)<,<>4#-)<3+*4,N#$%,</#*+,4<E#.'O5'4<)"#.45E,#&)5#'<4#5&,"#4<#
.E-%5E5'4#+,.'D#4I.,#4<<%#&'3#R(RN#:.'&%%"/#<+)#R(R#,4&>>#.,#,<)5%"#<O5)M<)[53/#,<#
M5#M5)5#*<'*5)'53#M.4I#4I5#4.E5%.'5,,#<>#4I5#R(R#,4&>>#4<#&3)5,,#'<'6L.'3<M,#
)5P+5,4,N#

/2>>#4'

G+--54#.,#&#>)55#&'3#<-5'#,<+)*5,#,<%+4.<'#><)#&+4<E&4.'D#
,",45E#&3E.'.,4)&4.<'N#G+--54#.,#E&.'4&.'53#?"#G+-5-4#@&?,`#
J><)E5)%"#B53+*4.O5#@&?,K/#W'*N/#MI<#-)<O.35#<-4.<'&%#4)&.'.'D#
&'3#*<',+%4&4.<'#,5)O.*5,#><)#G+--54N#G+--54#.,#&#*%.5'4#,5)O5)#
4<<%#M.4I#*%.5'4,#-)56?+.%4#><)#E<,4#>%&O<),#<>#@.'+;/#(&*/#&'3#
AFWSN#G+--54#)5-<)4,#?&,.*#.'O5'4<)"#.'><)E&4.<'#4<#&#*5'4)&%#
Rb@#3&4&?&,5N#=+,4<E#.'O5'4<)"#3&4&/#.'*%+3.'D#I&)3M&)5/#
,<>4M&)5/#<)#3&4&6*&%%#.'><)E&4.<'/#*&'#>&.)%"#5&,.%"#?5#&3353N#
Q'%"#*+))5'4#.'O5'4<)"#.,#E&.'4&.'53/#?+4#&'#.'O5'4<)"#I.,4<)"#
*<+%3#?5#&3353#>&.)%"#5&,.%"#M.4I#*+,4<E#3&4&?&,5#-)<D)&EE.'DN#

G+--54#*&'#?5#+,53#4<#?).'D#&#E&*I.'5#4<#&#['<M'#,4&45#&'3#[55-#.4#.'#4I&4#,4&45N#

3=#-.%-#'

=>5'D.'5#.,#&'#<-5'#,<+),5#-)<c5*4#E&'&D53#?"#4I5#=>5'D.'5#
*<E-&'"N#7#=>5'D.'5#<'%"#I&,#&#=@W#&'3#)5P+.)5,#-)<D)&EE.'D#
['<M%53D5#4<#.E-%5E5'4N#@$F@#I&,#+,53#=>5'D.'5#<'#@.'+;#><)#
,<E5#4.E5/#?+4#I&,#%.E.453#,+**5,,#+.,'D#*>5'D.'5#<'#(&*#QR#SN#
$%,</#=>5'D.'5#M&,#.'#&#4)&',.4.<'#,4&45#?54M55'#O5),.<'#0#&'3#
O5),.<'#C#&4#4I5#4.E5#<>#<+)#.E-%5E5'4&4.<'N##

=>5'D.'5#*&'#?5#+,53#4<#?).'D#&#E&*I.'5#4<#&#['<M'#,4&45#&'3#[55-#.4#.'#4I&4#,4&45N#

########################################################
T#I44-9ffMMMNP+5,4N*<EfP+5,46E&'&D5E5'46;45',.<',6><)6,E,#
`#I44-9ffMMMN-+--54%&?,N*<E#
7#I44-9ffMMMN*>5'D.'5N<)D#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#`#
#

?@AB#"'

@$FB5O_#.,#&#=QHR#4<<%,#><)#E&'&D5E5'4#<>#L.'3<M,#&'3#(&*#QR#
*<E-+45),N#8#@$FB5O#M&,#*<',.35)53#4I5#*)5&E#<>#4I5#*)<-#(&*#
E&'&D5E5'4#4<<%#&4#4I5#4.E5/#?+4#.4,#%&*[#<>#BYZ@#,+--<)4#4<<[#.4#<+4#<>#
4I5#)+''.'D#><)#+,N#

C%,#D+"#'

:.%5L&O5#.,#&#=QHR#4<<%,#><)#E&'&D5E5'4#<>#L.'3<M,/#(&*#QR/#
&'3#BYZ@#*<E-+45),N#g#:.%5L&O5#.,#&#O5)"#E&4+)5#-)<3+*4/#?+4#
.4,#&,,54#.'O5'4<)"#-)<D)&E#3.3#'<4#)+'#<'#BYZ@/#MI.*I#4<<[#.4#
<+4#<>#4I5#)+''.'D#><)#+,N#

*+:>#$'52%4#'

=&,-5)#R+.45#.,#&#=QHR#4<<%,#><)#E&'&D5E5'4#<>#(&*#QR#
*<E-+45),N#21#$#O5)"#)<?+,4#,+.45#<>#E&'&D5E5'4#4<<%,/#=&,-5)#
M&,#<'%"#><)#(&*#&'3#4I+,#4<<[#.4#<+4#<>#4I5#)+''.'D#><)#+,N#

B+1<%-1'

B&3E.'3#.,#&'#<-5'#,<+)*5#-)<c5*4#E&'&D53#?"#4I5#A'.O5),.4"#<>#
(.*I.D&'N#22#B&3E.'3#.,#&#O5)"#.'45)5,4.'D#=@W#4<<%#><)#(&*#QR#S#
&'3#<4I5)#>%&O<),#<>#AFWS#&'3#@.'+;N#B&3E.'3/#.4#,55E53#4<#+,/#.,#
&#D)5&4#4<<%#4<#[55-#&#*<E-+45)#&4#&#['<M'#,4&45N#L5#'55353#.'O5'4<)"/#>%5;.?.%.4"/#
&'3#4I5#&?.%.4"#4<#)+'#&36I<*#,*).-4,#<'#)5E<45#E&*I.'5,N#L5#3.3'X4#>55%#)&3E.'3#
E54#4I.,#*).45).&N#

*%")(+,+&'-#./)01*23).#)45-'3)!%66+')
L5#<).D.'&%%"#)5*<EE5'353#&'3#)5*5.O53#&--)<O&%#4<#-+)*I&,5#4I5#e!QS#,<%+4.<'/#
?+4#?"#4I5#4.E5#M5#D<4#<+)#-+)*I&,5#)5P+5,4#)5&3"/#E&'&D5E5'4#I&3#4<#)53.)5*4#
>+'3,#4<#<4I5)#I.DI5)#-).<).4"#-)<c5*4,N#e!QS#E54#&%%#<+)#'553,#><)#&'#<+4#<>#4I5#?<;/#
)5%&4.O5%"#5&,"#,<%+4.<'#4<#.'O5'4<)"#E&*I.'5,#&'3#5O5'4+&%%"#-&4*I#4I5EN#

Q'*5#>+'3.'D#M&,#M.4I3)&M'#><)#e!QS#M5#,+?E.4453#&#U'<#*&-.4&%#<+4%&"U#-)<-<,&%#
4<#.E-%5E5'4#G+--54N#L5#-)<-<,53#4<#35-%<"#&#G+--54#.'>)&,4)+*4+)5#4I&4#-)<O.353#

########################################################
_#F<M#*&%%53#$?,<%+45#(&'&D5#
8#I44-9ffMMMN%&')5ON*<E#
g#I44-9ffMMMN>.%5M&O5N*<E#
21#I44-9ffMMMNc&E>,<>4M&)5N*<E#
22#I44-9ff),+DN.43N+E.*IN53+f,<>4M&)5f)&3E.'3#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#7#
?&,.*#.'O5'4<)"/#.'*%+3.'D#3&4&*&%%,/#<>#&%%#hFWS#?&,53#'<'6L.'3<M,#*<E-+45),#&4#
4I5#@&?N#L.4I#)5,5&)*I#&'3#4)&.'.'D/#4I5#.'>)&,4)+*4+)5#*<+%3#?5#+,53#><)#E<)5#
,<-I.,4.*&453#4&,[,#,+*I#&,#-&4*I#35-%<"E5'4N##

L5#*I<,5#G+--54#><)#4I5#><%%<M.'D#)5&,<',9#
• W'O5'4<)"#.'#&'#Rb@#3&4&?&,5#).DI4#<+4#<>#4I5#?<;#
• F<#*&-.4&%#<+4%&"#
• (<35)'/#M5%%#,+--<)453#-)<3+*4#
• $*4.O5#<-5'#,<+)*5#*<EE+'.4"#
• R5)O5)#*&'#)+'#<'#(&*#QR#S#R5)O5)#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#_#

E#44%-.'54+$4#1'
i544.'D#,4&)453#M.4I#G+--54#M&,#&'#5;5)*.,5#.,#L5?#)5,5&)*I/#&%4I<+DI#*%&,,5,#&)5#
<>>5)53N#!5*&+,5#G+--54#.,#<-5'#,<+)*5/#4I5)5#.,#'<#,.'D%5#%&)D5#*<E-&'"#?5I.'3#
-+--54#-)<3+*.'D#-)<>5,,.<'&%#4+4<).&%,/#E&'+&%,/#&'3#,546+-#D+.35,/#&%4I<+DI#
G+--54#@&?,#3<5,#*<<)3.'&45#&#O5)"#*<E-)5I5',.O5#M.[.N##

HI5#-+--54#M.[.20#4I&4#G+--54#@&?,#<-5)&45,#4<#I5%-#3<*+E5'4#-+--54#I&,#E+*I#
D<<3#E&45).&%N#W'4)<3+*4<)"#-&D5,/#.',4&%%&4.<'#-&D5,/#*<'>.D+)&4.<'#-&D5,#&%%#I5%-53#
+-#D54#,4&)453N#L5#><+'3#&'#.45)&4.O5/#?&?"#,45-#&--)<&*I#4<#?5#O5)"#+,5>+%#&,#M5#
M5)5#&?%5#4<#?5445)#.,<%&453#.,,+5,#&,#4I5"#*&E5#+-/#&'3#M5#%5&)'53#E<)5#&?<+4#4I5#
-)<3+*4N#

L5#&%,<#-+)*I&,53#!"##$%&'()*$%&+',$)-'!"../)0'
12%3$&"*4)$2%'54%4&/6/%)'547/'84+9#?"#j&E5,#
H+)'?+%%/#&'#&*4.O5#G+--54#35O5%<-5)N#HI5#?<<[#.,#&#?.4#
3&453#?"#'<M#J<'5#4<#4M<#E&c<)#O5),.<',#?&*[K/#?+4#.4X,#
,4.%%#O5)"#I5%->+%N#

Q+)#D<&%#D544.'D#,4&)453#M&,#4<#,54#+-#4I5#G+--54#
,5)O5)/#I&O5#*%.5'4,#*<''5*4#4<#.4/#&'3#I&O5#4I5#*%.5'4#
)5-<)4#4I5#35>&+%4#-+--54#U>&*4U#.'O5'4<)"#4<#&#*5'4)&%#
("Rb@#3&4&?&,5N#L5#M5)5#,+**5,,>+%#.'#+'35)#&#3&"N#

########################################################
20#I44-9ff3<*,N-+--54%&?,N*<E#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#8#

7+:%3'F<>,#<#-4+4%0-'
L5#*I<,5#4<#+,5#&'#W'45%#$--%5#S,5)O5#&,#4I5#-+--54#,5)O5)N#Q+)#,5)O5)#)+',#(&*#QR#
S#21N`#,5)O5)/#&%4I<+DI#M5#&)5#.'#4I5#-)<*5,,#<>#45,4.'D#<'#(&*#QR#S#21N7#,5)O5)N#
HI.,#-&-5)#M.%%#*<O5)#4I5#21N7#*<'>.D+)&4.<'#M5#&)5#*+))5'4%"#45,4.'DN#

HI.,#-&-5)#M<'X4#?5#&#354&.%53#,45-#?"#,45-#D+.35/#?+4#M5#M.%%#*<O5)#&%%#4I5#,45-,#
'5*5,,&)"#4<#D54#,4&)453N#L5X%%#D54#&,#354&.%53#&,#M5#*&'/#&%4I<+DI#4.E5#*<',4)&.'4,#
M).4.'D#4I.,#-&-5)#E&"#)5P+.)5#+,#4<#&,,.D'#)5,5&)*I#4&,[,#4<#4I5#)5&35)N#

HI5#?&,.*#D5'5)&%#,45-,#&)5#&,#><%%<M,N#Q'%"#4I5#.45E,#.'#?<%3#M.%%#?5#3.,*+,,53#.'#
4I.,#-&-5)N#HI5#<4I5)#.45E,#,I<M#I<M#M5#*<'>.D+)53#<+)#,5)O5)/#?+4#E&"#?5#3<'5#
3.>>5)5'4%"#?"#<4I5)#<)D&'.V&4.<',N#
• >/=7-..!-/4!5@4-7$!C-6!"8!O!8$%#$%!
• =<'>.D+)5#4I5#,5)O5)#><)#'54M<)[.'D!
• $,,.D'#&#I<,4#'&E5#><)#4I5#,5)O5)#.'#aFR!
• >/=7-..!7+$!O634$!4$#$.3@$%!733.=!
• !.'3#4I5#,5)O5)#4<#$*4.O5#a.)5*4<)"#J<)#<)D&'.V&4.<'&%#3.)5*4<)"#,55)O.*5K!
• W'#L<)[D)<+-#(&'&D5)/#&33#<)#*<'>.D+)5#&**<+'4,#><)#4I5#&3E.',#&'3#
35O5%<-5),!
• W'#R",45E#G)5>5)5'*5,9#RI&).'D/#&%%<M#4I5#&3E.',#&'3#35O5%<-5),#4<#,,I#.'4<#
4I5#,5)O5)!
• ,%$-7$!-!@5@@$7!5=$%!-/4!0%35@!
• >/=7-..!P-67$%!Q-!@-%7!3B!@5@@$7R!-/4!25@@$7!
• ,3/B&05%$!25@@$7!
• *$=7!25@@$7!
• ,3?@&.$!/$$4$4!CS8TH!H&K%-%&$=!
• ,3/B&05%$!CS8TH!
• *$=7!25@@$7!E0-&/!
W45E,#'<4#*<O5)53#.'#4I.,#-&-5)/#?+4#,I<+%3#?5#3<'5#&,#'55353/#.'*%+35#,544.'D#+-#
(&*#><)#'54M<)[.'D/#?.'3.'D#4I5#(&*#4<#&#3.)5*4<)"#,5)O.*5/#,544.'D#+-#
&3E.'.,4)&4.O5#&'3#35O5%<-5)#&**<+'4,N##

$>45)#,544.'D#+-#&'3#45,4.'D#4I5#?&,.*#,54#+-/#M5#&3353#&#B+?"#&--%.*&4.<'#,5)O5)#
*&%%53#GI+,.<'#G&,,5'D5)#4<#35&%#M.4I#,5)O5)#%<&3N#Q+4#<>#4I5#?<;#4I5#-+--54#,5)O5)#
-)<*5,,#J-+--54E&,45)3K#*&'#<'%"#I&'3%5#<'5#*%.5'4#&4#&#4.E5N#G&,,5'D5)#:+,.<'#
&%%<M,#4I5#-+--54#,5)O5)#4<#I&'3%5#E+%4.-%5#*%.5'4,#,.E+%4&'5<+,%"N##

7.('5,,)5.$)%6$5'+)85&)*9)2)9+":+")
$#-)544"#?&,.*#,45-N#k<+#3<'X4#'553#&#O5)"#-<M5)>+%#,5)O5)#><)#45,4.'D#JM5#+,5#&#
^(L&)5#:+,.<'#O.)4+&%#E&*I.'5#<'#<'5#<>#<+)#35O5%<-5)X,#(&*G)<K/#?+4#"<+#M.%%#
M&'4#&#-<M5)>+%#E&*I.'5#><)#-)<3+*4.<'N#L5#+,5#&'#8#*<)5#SR5)O5#J-)5#F5I5%&EK#
M.4I#8#i!#<>#B$(N#HI.,#,5)O5)#&*4,#&,#4I5#-+--54E&,45)3#,5)O5)/#("Rb@#,5)O5)/#&'3#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#g#
$-&*I5#,5)O5)N#:<)#?&,.*#.'O5'4<)"#&'3#%.DI4#*<'>.D+)&4.<'#E&'&D5E5'4/#M5#,55#'<#
%<&3#.,,+5,#M.4I#2`11#*%.5'4,N##

R</#4I5#>.),4#,45-#.,#4<#.',4&%%#&'3#+-3&45#(&*#QR#S#,5)O5)N#a<'X4#4+)'#&'"#,5)O.*5,#<'#
c+,4#"54/#c+,4#.',4&%%#&'3#+-3&45N#(&*#QR#S#*%.5'4#*&'#?5#+,53/#?+4#4I5#.>#+,.'D#$-&*I5#
&'3#("Rb@/#4I5"#E&"#'553#4<#?5#.',4&%%53#&'3#*<'>.D+)53N#R.'*5#(&*#QR#S#R5)O5)#
*&E5#><)#>)55#M.4I#4I5#S,5)O5/#M5#*I<,5#4<#+,5#.4N#

7.('5,,)';+)2&#$+)$+:+,#6+")'##,()
R4)&.DI4#><)M&)3#4&,[N#S*<35#.,#&#>)55#3<M'%<&3#>)<E#$--%5N2C#

<"+5'+)5)6%66+')%(+")5.$)="#%6)
HI5#-+--5)E&,45)3#3&5E<'##'553,#4<#)+'#&,#&#+,5)/#,<#*)5&45#&#-+--54#+,5)#&'3#
D)<+-N#HI5#3<*+E5'4&4.<'#,&",#4<#)+'#Uf+,)f,?.'f-+--54E&,45)3#66E[+,5),U/#?+4#
4I.,#*<EE&'3#3<5,'X4#M<)[#+'35)#(&*#QR#SN#R.E-%"#+,5#4I5#R",45E#G)5>5)5'*5,#
$**<+'4,#-&'5#4<#*)5&45#&#,4&'3&)3#+,5)#&'3#D)<+-/#5&*I#*&%%53#l-+--54N#HI5#
,4&'3&)3#-)&*4.*5#><)#&#,5)O.*5#&**<+'4#%.[5#4I.,#.,#4<#-)5-5'3#UlU#4<#4I5#+,5)#&'3#
D)<+-#'&E5N#HI5#-&,,M<)3#><)#4I5#l-+--54#&**<+'4#*&'#?5#h/#MI.*I#M.%%#%<*[#4I5#
&**<+'4N#G%&*5#4I5#-+--54#+,5)#.'#4I5#-+--54#D)<+-N#H<#)5E<O5#4I5#-+--54#+,5)#>)<E#
%.,4,#<>#+,5),#&'3#D)<+-,#.'#*5)4&.'#(&*#QR#S#%.,4,/#*I&'D5#4I5#Wa#<>#4I5#+,5)#J&'3#.4,#
-).E&)"#D)<+-K#&'3#4I5#D)<+-#Wa#4<#C11N#A,5#4I5#$3O&'*53#Q-4.<',#.'#$**<+'4,#4<#
O&%.3&45#4I5#D)<+-#'&E5#&'3#Wa/#4I5'#4I5#-+--54#+,5)#Wa#&'3#D)<+-#&)5#*<))5*4N#

7.('5,,)>5&'+")?5)65"')#@)6%66+'A)5.$)!%66+')
:&*45)#.,#4I5#.'O5'4<)"#-&)4#<>#G+--54/#&'3#.,#)5P+.)53#><)#G+--54#<-5)&4.<'N#ZO5'#.>#
'<4#,4<).'D#4I5#.'O5'4<)"#.'#&#3&4&?&,5/#:&*45)#.,#)5P+.)53N#:&*45)#M.%%#)5-<)4#?&,.*#
I&)3M&)5#&'3#QR#.'O5'4<)"N#Z&*I#.45E#)5-<)453#.,#*&%%53#&#:&*4N#=+,4<E#:&*4,#*&'#?5#
-)<D)&EE53#4<#5;-&'3#4I5#.'O5'4<)"N#:&*4#*&'#?5#+,53#.'#G+--54#4<#.'#*<'3.4.<'&%#
45,4,#&'3#.'#<4I5)#M&",N#$,#k<3&#E.DI4#,&"/#U^5)"#+,5>+%/#:&*4,#&)5NU#

HI5)5#&)5#4M<#M&",#4<#.',4&%%#:&*45)#&'3#G+--54N#Q'5#.,#4<#D54#4I5#,<+)*52T#&'3#
*<E-.%5#"<+),5%O5,N#HI5)5#.,#5O5'#&#,*).-4#.'#4I5#,<+)*5#4I&4#M.%%#*<E-.%5#&'3#*)5&45#
&#(&*#.',4&%%5)#-&*[&D5N#@<<[.'D#&4#4I5#-&*[&D.'D#,*).-4#J*<'>f<,;f*)5&45-&*[&D5N,I#
.'#4I5#,<+)*5#*<35K#.,#&#D<<3#5;5)*.,5#><)#4I5#.'P+.,.4.O5#(&*#&3E.'/#?+4#.4X,#'<4#
)5P+.)53#,.'*5#&#)5&3"#4<#.',4&%%#(&*#-&*[&D5#.,#E&.'4&.'#?"#i<<D%52`N#i<<D%5#+,5,#
G+--54#4<#E&'&D5#.4,#(&*,N#

R.E-%"#3<M'%<&3#4I5#:&*45)#&'3#G+--54#-&*[&D5,N#W',4&%%#:&*45)#>.),4/#4I5'#G+--54N#

########################################################
2C#I44-9ff35O5%<-5)N&--%5N*<EfE&*#
2T#I44-9ffMMMN-+--54%&?,N*<EfE.,*f3<M'%<&36<-4.<',#
2`#I44-,9ff,.45,ND<<D%5N*<Ef&f5;-%&'&4<)"D&-N'54f-+--54#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#21#
F<459#^5),.<'#1N0`NT#M.%%#'<4#M<)[#*<))5*4%"#<'#(&*,N#W',4&%%#<'#<%35)#<)#E<)5#)5*5'4#
O5),.<'N#

<#.@-=%"+)!%66+')
HI5#>.'&%#,45-#?5><)5#&*4+&%%"#45,4.'D#-+--54#<'#4I5#*%.5'4#&'3#,5)O5)#.,#4<#*<'>.D+)5#
4I5#-+--54#,5)O5)N#G+--54#@&?,#I&,#&#*<'>.D+)&4.<'#D+.3527/#?+4#,<E5#E<3.>.*&4.<',#
&)5#'55353#MI5'#)+''.'D#-+--54E&,45)3#<'#&#(&*#,5)O5)N#

G+--54#.,#*<'4)<%%53#?"#&'#*<'>.D+)&4.<'#>.%5#%<*&453#.'#f54*f-+--54N#Z3.4#4I.,#>.%5#&'3#
&33#4I5#><%%<M.'D#%.'5,#4<#4I5#4<-#4<#45%%#-+--54#4<#+,5#4I5#+,5)#&'3#D)<+-#35>.'53#
5&)%.5)N#
sudo mkdir /etc/puppet
sudo echo "user = _puppet" > /etc/puppet/puppet.conf
sudo echo "group = _puppet" >> /etc/puppet/puppet.conf

HI5#%&,4#.45E#4<#*<'>.D+)5#.,#4I5#,.45#E&'.>5,4N#E[3.)#f54*f-+--54fE&'.>5,4,/#&'3#
4I5'#*)5&45#f54*f-+--54fE&'.>5,4f,.45N--#
# site.pp
file { "/etc/sudoers":
owner => root, group => wheel, mode => 440
}

B+'#-+--54E&,45)3#.'#35?+D#E<35#4<#,55#MI&4#.4#.,#3<.'DN#A,5#*<'4)<%6=#4<#5;.4#
/usr/sbin/puppetmasterd --no-daemonize -d

B+(')!%66+')
H5,4.'D#-+--54#.,#3<*+E5'453#<'#4I5#G+--54#M.[./#?+4#M5#M.%%#<+4%.'5#4I5#,45-,#
• Q'#4I5#,5)O5)#)+'#4I5#-+--54E&,45)3#3&5E<'#J,55#=<'>.D+)5#G+--54#&?<O5K#
sudo puppetmasterd --no-daemonize -d
• W',4&%%#:&*45)#&'3#G+--54#<'#4I5#*%.5'4#
• B+'#>&*45)#4<#O&%.3&45#.4X,#M<)[.'D#
• B+'#-+--543#&,9#
sudo puppetd -o --no-daemonize -v -d \
--server=<your puppet server FQDN>
• Q'#4I5#,5)O5)/#*<'4)<%6*#
• Q'#4I5#,5)O5)#)+'9##
sudo puppetca --sign --all
sudo puppetmasterd --no-daemonize -d
• F<M#)+'#4I5#,&E5#-+--543#*<EE&'3#&,#&?<O5#Jc+,4#+-#&))<M#<'#4I5#*%.5'4K#
<'#4I5#*%.5'4N#W4#,I<+%3#M<)[N#

$4#4I.,#-<.'4#M5#'<M#I&O5#&#M<)[.'D#G+--54#,5)O5)#&'3#*%.5'4m#H.E5#4<#&33#4I5#
.'O5'4<)"#3&4&?&,5N#

########################################################
27#I44-9ff3<*,N-+--54%&?,N*<EfD+.35,f*<'>.D+).'DNI4E%#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#22#

<#C6-,+).++$+$)8D9EF)F-G"5"-+()
R.'*5#M5#M&'4#G+--54#4<#)5-<)4#.'O5'4<)"#3&4&#4<#&#("Rb@#3&4&?&,5/#4I5#+'35)%".'D#
B+?"#*<35#<>#G+--54#'553,#,<E5#("Rb@#%.?)&).5,#4I&4#&)5#'<4#.',4&%%53#<'#(&*#QR#S#
R5)O5)#?"#35>&+%4N#$--%5#E&"#'<4#-)<O.35#4I5#?.'&).5,#><)#4I5,5#%.?)&).5,/#?+4#$--%5#
3<5,#-)<O.35#&#*<'>.D+)53#3<M'%<&3#<>#4I5#,<+)*5#><)#4I5#("Rb@#+,53#?"#(&*#QR#SN#
HI.,#,45-#.,#<'%"#'5*5,,&)"#.>#+,.'D#-+--54E&,45)3#<'#&#(&*#QR#S#,5)O5)#&'3#.>#
,4<).'D#4I5#.'O5'4<)"#3&4&#4<#("Rb@N#

HI5#%.?)&).5,#&)5#<'%"#+,53#><)#4I5#B+?"#*<35N#W>#4I5#$--%5#.'*%+353#("Rb@#,5)O5)#.,#
+,53/#4I5#$--%5#E&.'4&.'#*<35#.,#+,53#><)#4I5#,5)O5)/#'<4#4I5#*<35#3<M'%<&353#
4I)<+DI#4I.,#-)<*5,,N#

Z.4I5)#M&"/#,<+)*5#<)#?.'&).5,/#$--%5#-<,4,#&%%#4<#4I5.)#<-5'#,<+)*5#M5?#,.45N2_#i54#
4I5#("Rb@#>)<E#4I5#$--%5#,.45#&'3#'<45#MI5)5#4I5"#D54#.',4&%%53N#R<E5#,+DD5,4.<',#
4I&4#M5#+,53#&)5#?5%<MN#

F='30<>%,%-.'=$0<':02$3#'

i.O5'#&#*I<.*5/#+,5#4I5#?.'&).5,#>)<E#$--%5/#&,#4I&4#-)<*5,,#.,#E+*I#>&,45)N###

i54#4I5#,<+)*5#*<35#>)<E#$--%5#&'3#5;-&'3#4I5#&)*I.O5,N#Z;5*+45#4I5#><%%<M.'D#
*<EE&'3,#4<#*<E-.%5#4I5#*<35#&'3#E<O5#&%%#4I5#>.%5,#4<#&#+,5&?%5#%<*&4.<'N#=I&'D5#
4I5#n("Rb@#5;-&'353#&)*I.O5#-&4Io#&,#'5*5,,&)"N#
sudo -i
cd <MySQL expanded archive path>
# something like: /Users/admin/Downloads/MySQL-53
rm -rf /tmp/MySQL.root
env RC_ARCHS="i386 x86_64" \
RC_CFLAGS="-arch i386 -arch x86_64 -pipe" \
RC_NONARCH_CFLAGS="-pipe" \
SRCROOT=<MySQL expanded archive path> \
OBJROOT=/tmp/MySQL.root/MySQL~obj \
SYMROOT=/tmp/MySQL.root/MySQL~sym \
DSTROOT=/tmp/MySQL.root/MySQL~dst \
make install

# now move the binaries to a useful location


mkdir -p /usr/local/mysql
cp -R /tmp/MySQL.root/MySQL~dst/usr/* /usr/local/mysql
exit

F='2:%-.'4)#'@>>,#'G%-+$%#:'

i54#4I5#?.'&).5,#>)<E#$--%5/#&'3#5;-&'3#4I5#&)*I.O5,N#k<+#M.%%#,55#&#+,)#><%35)N#
Z;5*+45#4I5#><%%<M.'D#*<EE&'3,#4<#E<O5#&%%#4I5#>.%5,#4<#&#+,5&?%5#%<*&4.<'N#=I&'D5#
4I5#n("Rb@#5;-&'353#?.'&).5,#-&4Io#&,#'5*5,,&)"N#
sudo mkdir -p /usr/local/mysql#
cp -R /<MySQL expanded binaries path>/usr/* \

########################################################
2_#I44-9ffMMMN<-5',<+)*5N&--%5N*<Ef3&)M.',<+)*5f=+))5'4#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#20#
/usr/local/mysql

7.('5,,)H%GD)IJ89)
G5)%#I&,#=G$FN#GYG#I&,#GZ$BN#B53#Y&4#I&,#kA(N#B+?"#I&,#iZ(RN#i5E,#&%%<M,#><)#
5&,"#.',4&%%&4.<'#<>#B+?"#)5%&453#*<35N#L5#'553#4<#.',4&%%#4I5#'55353#iZ(R#><)#
("Rb@#,<#G+--54#*&'#)5-<)4#.'O5'4<)"#3&4&#4<#4I5#("Rb@#3&4&?&,5N#$,,+E.'D#4I5#
("Rb@#?.'&).5,#&)5#%<*&453#.'#f+,)f%<*&%fE",P%9#
# if an http proxy is used on the network
export http_proxy=http://proxy.company.com:8080
env ARCHFLAGS="-arch x86_64" gem install mysql \
-- --with-mysql-config=/usr/local/mysql/bin/mysql_config

<#.@-=%"+)8D9EF)
HI5#("Rb@#3&4&?&,5#.,##+,53#4<#,4<)5#*<'>.D+)&4.<'#.'><)E&4.<'#>)<E#4I5#*%.5'4,N28#
Q'5#<>#4I5#&3O&'4&D5,#<>#G+--54#.,#4I&4#*<'>.D+)&4.<'#3&4&?&,5#.,#)5&%%"#5&,"#4<#,54#
+-/#&'3#.,#O5)"#O&%+&?%5N#Q'#&#(&*#,5)O5)/#<4I5)#4I&'#4I5#("Rb@#?.'&).5,#3.,*+,,53#
&?<O5#&'3#4I5#B+?"#iZ(/#4I5)5#.,#'<#&33.4.<'&%#*<'>.D+)&4.<'#'55353#4<#+,5#4I5#
3&4&?&,5N##

=<E-%545#*<'>.D+)&4.<'#&'3#E&'&D5E5'4#<>#&#("Rb@#3&4&?&,5#.,#?5"<'3#4I5#,*<-5#
<>#4I.,#-&-5)/#?+4#M5#M.%%#D<#4I)<+DI#4I5#?&,.*,#<>#+,.'D#4I5#("Rb@#3&4&?&,5#
.'*%+353#M.4I#(&*#QR#S#R5)O5)N#Y5)5#&)5#4I5#?&,.*#,45-,9#
• W'#R5)O5)#$3E.'#&33#4I5#("Rb@#,5)O.*5#
• W'#4I5#("Rb@#,5)O.*5/#*I&'D5#4I5#)<<4#-&,,M<)3#><)#4I5#("Rb@#,5)O.*5N#
@5&O.'D#.4#?%&'[#.,#&#I+D5#,5*+).4"#).,[#
• R4&)4#4I5#("Rb@#,5)O.*5##

HI&4X,#.4p#4I5#("Rb@#,5)O.*5#.,#'<M#)+''.'D#<'#4I5#,5)O5)N#L5#,4.%%#'553#4<#*)5&45#&#
3&4&?&,5#&'3#3&4&?&,5#+,5)#><)#-+--54E&,45)3N#
• :)<E#4I5#45)E.'&%#)+'9#E",P%#6+#)<<4#6-#
• :)<E#M.4I.'#E",P%#)+'9#
create database puppet;
grant all privileges on puppet.* to puppet@localhost identified by
'StrongPasswordHere';

$#3&4&?&,5#&'3#+,5)#I&O5#'<M#?55'#*)5&453N#HI5#>.'&%#,45-#.,#4<#45%%#-+--54E&,45)3#
4<#+,5#4I5#3&4&?&,5N#Z3.4#4I5#f54*f-+--54f-+--54N*<'>#>.%5#&'3#&33#4I5#><%%<M.'D#
,5*4.<'9#
[puppetmasterd]
storeconfigs = true
dbadapter = mysql
dbuser = puppet
dbpassword = StrongPasswordHere
dbserver = localhost
dbsocket = /var/mysql/mysql.sock

########################################################
28#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.fA,.'DlR4<)53l=<'>.D+)&4.<'#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#2C#
F<45#4I5#3&4&?&,5#-&,,M<)3#.,#.'#4I5#-+--54N*<'>#>.%5#.'#*%5&)#45;4/#,<#4I5#>.%5#&'3#
,5)O5)#'553,#4<#?5#-)<45*453#&**<)3.'D%"N#!"#35>&+%4#(&*#QR#S#R5)O5)#3<5'X4#&%%<M#
'54M<)[#&**5,,#4<#4I5#3&4&?&,5/#,<#4I&4X,#&#D<<3#>&.%,&>5/#?+4#.4X,#'<4#*<E-%545#
,5*+).4"N#

B+(')';+)!%66+')<,-+.')K=5-.)
B+''.'D#4I5#,&E5#-+--54#45,4#&,#&?<O5#.'#4I5#H5,4#G+--54#,5*4.<'/#M5#*&'#?)<M,5##
4I5#("Rb@#3&4&?&,5#&'3#.4#M.%%#,I<M#4I&4#4I5#*%.5'4#.'><)E&4.<'#J4I5#:&*4,#>)<E#4I5#
*%.5'4K#&)5#'<M#,4<)53#.'#4I5#("Rb@#3&4&?&,5N2g#F<45#4I5#-2+)+/#34:);%46/+/#&'3#
34:);<4#"/+#4&?%5,N#

########################################################
2g#HI5)5#&)5#&#'+E?5)#<>#D<<3#4<<%,#4<#?)<M,5#&#("Rb@#3&4&?&,5N#Q'5#>&O<).45#>)55#(&*#4<<%#.,#

I44-9ffMMMN,5P+5%-)<N*<Ef#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#2T#

*0-=%.2$+4%0-';+-+.#<#-4'
7.('5,,-.=)!5&L5=+()
L5#*I<,5#G+--54#?5*&+,5#<>#.'O5'4<)"#E&'&D5E5'4#&'3#
*<'>.D+)&4.<'#E&'&D5E5'4N#:<)#@$F@/#.',4&%%.'D#-&*[&D5,#.,#
*5'4)&%#4<#<+)#*<'>.D+)&4.<'#E&'&D5E5'4N##

HI5#?+%[#<>#<+)#*<'>.D+)&4.<'#E&'&D5E5'4#.,#3<'5#?"#&'#.'#
I<+,5#,5*+).4"#4<<%#M5#*&%%#R5*+).4"#H<<%#Q'#(&*#JRHQ(KN#
RHQ(#.,#&#G5)%#,*).-4#M)&--53#.'#&'#$--%5R*).-4#R4+3.<#
&--%.*&4.<'N#L5#-&*[&D5#.4#+-#&'3#-+,I#.4#4<#&%%#*%.5'4,#O.&#
G+--54N#W'#&#)5*+),.O5#4M.,4/#M5#&%,<#+,5#RHQ(#4<#.',4&%%#4I5#-+--54#*%.5'4m#R<#4I5#
,5P+5'*5#<>#5O5'4,#.,#2K#4I5#+,5)#.',4&%%,#&'3#)+',#RHQ(p#0K#RHQ(#.',4&%%,#&'3#
*<'>.D+)5,#G+--54p#CK#G+--54#E&.'4&.',#4I5#O5),.<'#<>#RHQ(N#L5#+,5#RHQ(#4<#
.',4&%%#G+--54#><)#&#'+E?5)#<>#)5&,<',N#:.),4/#RHQ(#.,#.',4&%%53#<'#&%%#E&*I.'5,/#5O5'#
,4&'3#&%<'5#E&*I.'5,/#,<#<+)#+,5),#&)5#+,53#4<#.',4&%%.'D#RHQ(N#R5*<'3/#RHQ(#M&,#
.',4&%%53#<'#I+'3)53,#<>#(&*,#&4#@$F@#?5><)5#M5#,4&)453#+,.'D#G+--54N#L5#I&3#
*<353#.'#,<E5#?&,.*#,5%>6+-3&4.'D#*<35#.'4<#RHQ(/#,<#MI5'#M5#,4&)453#4<#)<%%#<+4#
G+--54/#M5#I&3#RHQ(#.',4&%%#.4N#HI.,#&%%<M53#+,#4<#D54#G+--54#<'#I+'3)53,#<>#
E&*I.'5,#M.4I<+4#'553.'D#4<#)5,<)4#4<#,'5&[5)'54N##

G+--54#I&,#4I5#&?.%.4"#4<#.',4&%%#-[D#<)#E-[D#-&*[&D5,N#LI5'#G+--54#.',4&%%,#,+*I#&#
-&*[&D5#.4#%5&O5,#&#)5*5.-4#.'#fO&)f3?#,<#.4#['<M,#'<4#4<#.',4&%%#4I&4#-&*[&D5#J&'3#
O5),.<'K#&D&.'N#R.'*5#4I5#(&*#I&,#'<#'&4.O5#-&*[&D5#E&'&D5E5'4#*&-&?.%.4"#%.[5#
BG(/#G+--54#*&'X4#3"'&E.*&%%"#)5.',4&%%#&#-&*[&D5#.>#.4#.,#)5E<O53N#HI.,#.,#&#?.4#<>#&#
,I<)4#*<E.'D/#?+4#*&'#?5#I&'3%53#M.4I#&#)5*5.-4f.',4&%%&4.<'#*I5*[#M).445'#.'4<#4I5#
G+--54#*%&,,N##L5#I&O5'X4#.E-%5E5'453#4I.,#*I5*[#"54/#?+4#M5#&)5#4I.'[.'D#&?<+4#.4N#

Q+)#D<&%#.,#4<#+,5#G+--54#4<#.',4&%%#?&,5#O5),.<'#<>#&%%#<+)#*<)5#,<>4M&)5/#4I5'#+,5#
G+--54#4<#-+,I#-&*[&D5#+-3&45,#&'3#[55-#4I5#*<)5#,<>4M&)5#+-#4<#3&45N#

K66,+)9#@'45"+)M6$5'+)
Q'5#<>#4I5#<4I5)#E&c<)#-+)-<,5,#<>#*<'>.D+)&4.<'#E&'&D5E5'4#.,#
4<#[55-#4I5#QR#&'3#$--%5#,+--%.53#,<>4M&)5#+-#4<#3&45N#$--%5#
-)<O.35,#&#*<EE&'3#%.'5#4<<%#J,<>4M&)5+-3&45K#4<#-5)><)E#
+-3&45,/#?+4#.>#4I5#+-3&45#)5P+.)5,#&#)5,4&)4/#%.>5#D54,#*<E-%.*&453N#
L5#&%,<#'55353#&#M&"#><)#'<'6&3E.',#4<#[55-#4I5#(&*#-&4*I53N#

H<#35&%#M.4I#4I.,#.,,+5#M5#35O5%<-53#&#,*).-4#4I&4#-+--54#.',4&%%,#
&'3#E&.'4&.',N#G+--54#&%,<#.',4&%%#&#%&+'*I3#3&5E<'#4I&4#)+',#&4#&#)&'3<E#4.E5#J,<#
&,#'<4#4<#<O5)MI5%E#<+)#+-3&45#,5)O5)KN#HI5#%&+'*I3#c<?#)+'#&,#)<<4#&'3#5;5*+45,#
<+)#,*).-4N#Q+)#,*).-4#4I5'#*I5*[,#,<>4M&)5+-3&45#><)#+-3&45,/#&'3#.>#4I5)5#&)5#&'"/#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#2`#
3.,-%&",#&#3.&%<D#4<#4I5#+,5)N#HI5#+,5)#.,#4I5'#D.O5'#&'#<--<)4+'.4"#4<#,&O5#&'3#P+.4#
&%%#)+''.'D#&--%.*&4.<',/#4I5'#-)5,,5,#&'#.',4&%%#?+44<'#4I&4#<-5',#4I5#iAW#R<>4M&)5#
A-3&45N#R.'*5#4I5#iAW#R<>4M&)5#A-3&45#-)<D)&E#.,#?5.'D#)+'#&,#)<<4/#&'#
&3E.'.,4)&4.O5#-&,,M<)3#.,#'<4#)5P+.)53#&'3#4I5#+,5)#*&'#.',4&%%#&%%#4I5#$--%5#
+-3&45,N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#27#

@1"+-3#1'F<>,#<#-4+4%0-'
K%'#(-=.)
!"#35>&+%4#-+--54#)5P+.)5,#&#[5"#5;*I&'D5#?54M55'#4I5#,5)O5)#&'3#5&*I#*%.5'4N01#W'#
&'#<-5'#.'45)'54#5'O.)<'E5'4#4I.,#.,#35,.)&?%5#4<#-)5O5'4#+'&+4I<).V53#*<E-+45),#
>)<E#*<''5*4.'D#4<#4I5#-+--54#,5)O5)#&'3#I&O.'D#-<45'4.&%%"#-).O&45#<)#*<EE5)*.&%#
,<>4M&)5#<)#*<'>.D+)&4.<',#3<M'%<&353#4<#4I5#+'&+4I<).V53#*%.5'4N#LI5'#4I5#-+--54#
*%.5'4#>.),4#*<''5*4,#4<#&#,5)O5)/#4I5#*%.5'4#+-%<&3,#.4,#*5)4.>.*&45#)5P+5,4#4<#4I5#
,5)O5)/#&'3#4I5#,5)O5)#E+,4#,.D'#4I5#)5P+5,4#?5><)5#.4#M.%%#?5D.'#4<#E&'D5#4I5#*%.5'4N#
HI5#,.D'.'D#-)<*5,,#*&'#?5#E&'+&%/#+,.'D#4I5#-+--54*&#*<EE&'3/#<)#&+4<E&4.*N#

W'#&#,E&%%#E&'&D53#5'O.)<'E5'4/#E&'+&%%"#,.D'.'D#4I5#*5)4.>.*&45#)5P+5,4,#E&"#?5#
E&'&D5&?%5N#LI5'#4I5#'+E?5)#<>#*%.5'4,#.,#4<<#I.DI#4<#5&,.%"#E&'&D5#E&'+&%#
,.D'.'D/#-+--54E&,45)3#<>>5),#4I5#&+4<,.D'#<-4.<'N#

HI5#$+4<,.D'#>5&4+)5#.,#4+)'53#<'#.'#4I5#-+--54N*<'>#>.%5#<'#4I5#,5)O5)N#$+4<,.D'#
4I5'#,.E-%"#*I5*[,#4I5#*%.5'4,#*5)4'&E502#'&E5#&D&.',4#5'4).5,#.'#4I5#
f54*f-+--54f&+4<,.D'N*<'>#>.%5/#&'3#.>#4I5)5#.,#&#E&4*I/#4I5#*5)4.>.*&45#)5P+5,4#.,#
&+4<E&4.*&%%"#,.D'53#MI5'#4I5#*%.5'4#*<''5*4,#><)#4I5#>.),4#4.E5N##

HI5#f54*f-+--54f&+4<,.D'N*<'>#>.%5#*&'#?5#&,#,.E-%"#&,9#
hostname.domain.com
*.secure.domain.com

Q'5#*&O5&4#M5#%5&)'53#.,#4I&4#.>#4I5#*%.5'4#'553,#4<#)5P+5,4#&#'5M#,.D'53#*5)4.>.*&45/#
&+4<,.D'#M.%%#>&.%#,.'*5#4I5#*5)4.>.*&45#)5P+5,4#I&,#&%)5&3"#?55'#,.D'53#><)#4I&4#*%.5'4N#
G+--54#I&'3%5,#4I.,#?"#+,.'D#4I5#-+--54*&#4<<%#M.4I#4I5#66*%5&'#<-4.<'N#HI.,#?5*<E5#
O5)"#)5%5O&'4#MI5'#35&%.'D#M.4I#&#%&)D5#'+E?5)#<>#*%.5'4,N#R55#4I5#@5,,<',#@5&)'53#
,5*4.<'#><)#I<M#M5#I&'3%53#4I.,N###

J.:-"#.C+.'()
G+--54#,+--<)4,#E+%4.-%5#5'O.)<'E5'4,/#MI.*I#.,#5,,5'4.&%%"#&#E5&',#<>#&--%".'D#
3.>>5)5'4#*<'>.D+)&4.<',N00#$'#5'O.)<'E5'4#*&'#?5#&--%.53#4<#&#*%.5'4#?"#&#'<'6
O<%&4.%5#,544.'D#.'#4I5#*%.5'4X,#-+--54N*<'>#>.%5/#<)#?"#+,.'D#4I5#665'O.)<'E5'4#
*<EE&'3#%.'5#,M.4*IN#Z'O.)<'E5'4,#*&'#?5#+,53#.'#&#35O5%<-E5'4f-)<3+*4.<'#
-&)&3.DE/#<)#><)#3.>>5)5'4#%5O5%,#<>#,+--<)4N#

########################################################
01#:<)#&#*<E-%545#3.,*+,,.<'#<>#*5)4.>.*&45,#&'3#G+--54#,5*+).4"/#,55#

I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.f=5)4.>.*&45,l$'3lR5*+).4"#
02#=5)4'&E5#?"#35>&+%4#.,#4I5#*%.5'4#I<,4'&E5/#?+4#*&'#?5#,54#E&'+&%%"#<'#4I5#*%.5'4#4<#,<E54I.'D#5%,5N#

HI5)5#&)5#&3O&'4&D5,#4<#E&'&D.'D#*5)4'&E5N#R55#4I5#@5,,<',#@5&)'53#,5*4.<'#<>#4I.,#-&-5)#><)#E<)5#
.'><)E&4.<'N###
00#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.fA,.'Dl(+%4.-%5lZ'O.)<'E5'4,#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#2_#

<%('#C)>5&'()
=+,4<E#:&*4,#<>>5)#&#M&"#4<#D&4I5)#.'O5'4<)"#.'><)E&4.<'#>)<E#*%.5'4,N0C#$#:&*4#.,#
,.E-%"#&#)+?"#,*).-4#4I&4#)54+)',#,<E5#,E&%%#O&%+5N#@$F@#I&,#&#'+E?5)#<>#*+,4<E#
>&*4,N#:&*4,#*&'#&%,<#?5#+,53#?"#G+--54#.'#4I5#*<'>.D+)&4.<'#*%&,,5,/#&'3#&)5#
-).E&).%"#+,53#4<#3545)E.'5#.,#,<E54I.'D#,I<+%3#<)#,I<+%3#'<4#?5#3<'5#4<#&#*%.5'4N#
><)#5;&E-%5/#<'5#?+.%4#.'#:&*4#.,#<-5)&4.'D,",45EN#W'#&#G+--54#*%&,,#<'5#*&'#&33#&#
45,4#><)#<-5)&4.'D,",45E#&'3#I&O5#<'5#*<'>.D+)&4.<'#&--%.53#.>#4I5#)5,+%4#.,#U3&)M.'U#
&'3#&#3.>>5)5'4#*<'>.D+)&4.<'#&--%.53#.,#4I5#)5,+%4#.,#U*5'4<,U#N#

F<459#'5.4I5)#:&*4#'&E5,#'<)#4I5#O&%+5,#*&'#*<'4&.'#,-&*5,N#

Q'5#*+,4<E#:&*4#M5#>.'3#O5)"#+,5>+%#.,#-)<-5)4"#'+E?5)N#L5#+,5#4I5#'O)&E#
*<EE&'3#4<#&33#&#*+,4<E#'<'6O<%&4.%5#O&).&?%5#*<'4&.'.'D#<+)#.'45)'&%#@$F@#
-)<-5)4"#'+E?5)#4<#5O5)"#(&*N#L5#4I5'#+,5#&#*+,4<E#:&*4#4<#)54).5O5#4I.,#-)<-5)4"#
'+E?5)N#HI.,#&%%<M#+,#*)<,,#)5>5)5'*5#4I5#)5*<)3,#.'#<+)#G+--54#3&4&?&,5#M.4I#
4I<,5#.'#<+)#-)<-5)4"#3&4&?&,5N#R.'*5#4I5#(&*#3<5,'X4#,+--<)4#a(W#&'3#&#!WQa#
&,,54l.3#4&D/#4I.,#.,#4I5#'5;4#?5,4#4I.'DN#

HI5#*+,4<E#:&*4#.,#>&.)%"#5&,"#4<#.E-%5E5'4/#5O5'#.>#"<+#3<'X4#['<M#B+?"N#HI5#
*+,4<E#:&*4#><)#<+)#G)<-5)4"F+E?5)#.,#,.E-%"#&#>.%5#*&%%53#%&'%l-)<-5)4"l'+E?5)9#
# lanl_property_number.rb
Facter.add("lanl_property_number") do
confine :kernel => :darwin
setcode do
%x{nvram asset_id | awk '{print $2}'}.chomp
end
end

HI5#>.%5#.,#*&%%53#4I5#,&E5#'&E5#&,#4I5#*+,4<E#:&*4N#HI5#*<35#<'%"#)+',#.>#4I5#[5)'5%#
.,#a&)M.'N#HI5#B+?"#*<35#,.E-%"#5;5*+45,#&#<'5#%.'5#?&,I#*<EE&'3#4I&4#)54+)',#4I5#
&,,54l.3#'O)&E#O&).&?%5N##

Y5)5X,#4I5#D)5&4#-&)49#:"+)26'=4:)+'4*/'4")264)$:4##9'477/7')2')-/'!"../)'74)4>4+/m#
F<#&33.4.<'&%#M<)[#.,#)5P+.)53N#j+,4#*)5&45#4I5#:&*4/#35-%<"#4I5#>.%5/#&'3#&>45)#&#>5M#
I<+),#&%%#4I5#3&4&#.,#*<%%5*453N#Q'5#'<45/#4I5#>&*4#.,#)+'#5O5)"#4.E5#-+--54#)+',#
J5O5)"#C1#E.'+45,/#?"#35>&+%4KN#A,5#&#*+,4<E#:&*4#><)#&#3&4&#*&%%/#><)#5;&E-%5/#M<+%3#
)5P+.)5#,<E5#*&)5>+%#-%&''.'DN#HI5#+,5#<>#&#45E-#>.%5#&,#&#,5E&-I<)5/#><)#5;&E-%5/#
*<+%3#,<%O5#4I5#.,,+5N###

H+6#"'-.=)
G+--54#,+--<)4,#O5)"#354&.%53#)5-<)4.'D0T/#&%4I<+DI#@$F@#.,#'<4#+,.'D#4I.,#>5&4+)5N#
LI5'#4I5#-+--543#*%.5'4#)+',#<'#&#'<35/#.4#*&'#?5#,54#4<#)5-<)4#?&*[#4<#-+--54#&%%#
,<)4,#<>#.'><)E&4.<'#&?<+4#4I5#)+'N#:)<E#4I5#G+--54#L5?#,.459#UZ&*I#*%.5'46,.35#

########################################################
0C#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.f$33.'Dl:&*4,#
0T#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.fG+--54lB5-<)4.'D#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#28#
4)&',&*4.<'#D5'5)&45,#&#4)&',&*4.<'#)5-<)4#*<'4&.'.'D#E54).*,#&'3#%<D#E5,,&D5,NU#
HI5,5#)5-<)4#*&'#?5#+,53#><)#D&4I5).'D#E54).*,#<'#G+--54#.4,5%>N##ZO5'4+&%%"#G+--54#
@&?,#M<+%3#%.[5#4<#&33#E<)5#.'><)E&4.<'#.'4<#4I5#)5-<)4,#4<#E&[5#4I5E#E<)5#+,5>+%N#

JN'+".5,)O#$+)<,5((-@-+"())
H5*I'.*&%%"/#G+--54#)5>5),#4<#&#*%.5'4#&,#&#U'<35UN#HI.,#E&[5,#,5',5#,.'*5#G+--54#*&'#
E&'&D5#,5)O5),#&,#M5%%#&,#*%.5'4,N#W'#>&*4/#G+--54#M&,#35,.D'53#4<#E&'&D5#,5)O5),N#

G+--54#&%%<M,#><)#3.>>5)5'4#*%&,,5,#4<#?5#&--%.53#4<#3.>>5)5'4#'<35,#?&,53#<'#&#
'+E?5)#<>#>&*4<),N#:&*4,#*&'#?5#45,453/#'<35,#*&'#?5#.35'4.>.53#3.)5*4%"/#<)#&'#
5;45)'&%#3&4&?&,5#*&'#?5#+,53#4<#,4<)5#'<35,#&'3#MI&4#*%&,,5,#4<#&--%"#4<#4I5EN#HI.,#
%&,4#<-4.<'#.,#*&%%53#Z;45)'&%#F<35#=%&,,.>.5),N0`#HI5)5#&)5#,<E5#O5)"#45*I'.*&%#
)5&,<',#4<#+,5#Z;45)'&%#F<35#=%&,,.>.5),/#?+4#4I5#?5,4#<'5#.,#4I5#&?.%.4"#4<#E&'&D5#
'<35,#>)<E#&#3&4&?&,5N#LI.%5#&#3&4&?&,5#.,'X4#45*I'.*&%%"#)5P+.)5366G+--54#M.%%#*&%%#
&#,*).-4#4<#D54#'<35#.'><)E&4.<'664I5#+,5#<>#&#3&4&?&,5#&33,#E+*I#O&%+5N#

$'#Z;45)'&%#F<35#=%&,,.>.5)#3&4&?&,5#*<+%3#?5#+,53#4<#3"'&E.*&%%"#&,,.D'#*%&,,5,#4<#
?5#&--%.53#4<#'<35,N#HI.,#*<+%3#&%%<M#&#>.5%3#<)D&'.V&4.<'#4<#.',4&%%#,<>4M&)5#<)#
*<'>.D+)5#&#E&*I.'5#,.E-%"#?"#E&[5,#,<E5#*I&'D5,#.'#&#L5?#3&4&?&,5N#L5#&)5#O5)"#
5;*.453#&?<+4#.E-%5E5'4.'D#Z;45)'&%#F<35#=%&,,.>.5),/#?+4#.4#.,#'<4#&#,.E-%5#4&,[N#
H5*I'.*&%%"#.,#O5)"#5&,"#4<#.E-%5E5'4/#?+4#)5&%.,4.*&%%"#4I5#,4)+*4+)5#<>#4I5#Z;45)'&%#
F<35#=%&,,.>.5)#3&4&?&,5#*&'#?5#*<E-%.*&453#&'3#)5P+.)5,#D)5&4#><)54I<+DI4N##

/2>>#4'H+:)G0+$1'+-1'C0$#<+-'

G+-5-4#@&?,#<>>5),#&#4<<%#*&%%53#a&,I?<&)3N07#a&,I?<&)3#,I<M#&#,'&-,I<4#<>#4I5#
G+--54#.',4&%%&4.<'/#&'3#&%%<M#><)#,<E5#E&'.-+%&4.<'#<>#'<35,N#HI5#4<<%#,I<M,#
-)<E.,5/#?+4#&,#<>#$-).%#0121/#.4#,4.%%#E<)5#<>#&#45*I'<%<D"#-)5O.5M#4I&'#&#+,5>+%#4<<%N#

:<)5E&'#.,#&%,<#&#)5-<)4.'D#&'3#'<35#E&'&D5E5'4#4<<%N0_#:<)5E&'#.,#,.E.%&)#4<#
a&,I?<&)3#.'#4I&4#.4#,I<M,#&#*+))5'4#,'&-,I<4#<>#4I5#G+--54#.',4&%%&4.<'N#W4#&%,<#
&%%<M,#><)#,<E5#E&'.-+%&4.<'#<>#'<35,#4I)<+DI#&#L5?#.'45)>&*5N#@.[5#a&,I?<&)3/#.4X,#
)&4I5)#.EE&4+)5#?+4#,I<M,#D)5&4#-)<E.,5N#

!;%(-#.)!5((+.=+")
$,#,4&453#5&)%.5)/#<+4#<>#4I5#?<;#4I5#-+--54#,5)O5)#-)<*5,,#J-+--54E&,45)3K#*&'#<'%"#
I&'3%5#<'5#*%.5'4#&4#&#4.E5N#GI+,.<'#G&,,5'D5)08#&%%<M,#4I5#-+--54#,5)O5)#4<#I&'3%5#

########################################################
0`#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.fZ;45)'&%lF<35,#
07#I44-9ffMMMN-+--54%&?,N*<Ef-+--54f)5%&4536-)<c5*4,f3&,I?<&)3f#
0_#I44-9ff4I5><)5E&'N<)DfM.[.f><)5E&'fG+--54lB5-<)4,#
08#I44-9ffMMMNE<3)&.%,N*<E#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#2g#
E+%4.-%5#*%.5'4,#,.E+%4&'5<+,%"N#W',4&%%.'D#G&,,5'D5)#.,#?5"<'3#4I5#,*<-5#<>#4I.,#
3<*+E5'4/#?+4#G+--54#@&?,#3<5,#<>>5)#,<E5#&,,.,4&'*5#<'#4I5#L5?N0g#

########################################################
0g#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.fA,.'DlG&,,5'D5)#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#01#

I0&'?@A?'2:#:'/2>>#4'
85&;-.+)7.:+.'#"D)
Q'5#<>#4I5#-).E&)"#)5&,<',#M5#*I<,5#G+--54#M&,#4I5#5&,5#<>#D544.'D#&'#.'O5'4<)"#
3&4&?&,5#+-#&'3#-<-+%&453N#G+--54#-)<O.35,#<+4#<>#4I5#?<;#.'O5'4<)"#><)#QR/#&'3#
I&)3M&)5N#L5#&33#&#>5M#&33.4.<'#.'O5'4<)"#.45E,#J,55#=+,4<E#:&*4,#?5%<MKN#
HI)<+DI#*)5&4.O5#Rb@#P+5).5,#&'3#356'<)E&%.V&4.<'/#M5#D&.'#D<<3#.',.DI4#.'4<#<+)#
(&*#-<-+%&4.<'N#Q'5#5;&E-%5#.,#,#P+5)"#4I&4#*&'#45%%,#+,#I<M#E&'"#E&*I.'5,#M5#
I&O5#)+''.'D#21NT/#&'3#I<M#E&'"#&)5#*&-&?%5#<>#)+''.'D#21N`#<)#21N7N##

<%('#C)>5&'()
$,#,4&453#5&)%.5)/#&#:&*4#.,#&#+'.4#<>#.'><)E&4.<'#&?<+4#&#*%.5'4N#$#:&*4#E.DI4#?5#4I5#QR#
O5),.<'/#<)#4I5#'+E?5)#<>#-)<*5,,<),N#$#*+,4<E#:&*4#.,#,.E-%"#&#B+?"#,*).-4#)+'#<'#
4I5#*%.5'4#4I&4#)54+)',#&#O&%+5N#

@$F@#I&,#.E-%5E5'453#&#'+E?5)#<>#*+,4<E#:&*4,N#L5#&)5#&?%5#4<#D54#4I5#O5),.<'#<>#
R$^#.',4&%%53/#4I5#R$^#O.)+,#35>.'.4.<'#>.%5#3&45/#4I5#O5),.<'#.>#RHQ(#J@$F@q,#(&*#
I&)35'.'D#4<<%K/#4I5#,4&4+,#<>#R$^#&+4<-)<45*4/#4I5#(&*,#@$F@#-)<-5)4"#'+E?5)/#&'3#
&#*<+-%5#<>#<4I5)#.45E,N#L5#-%&'#<'#+,.'D#*+,4<E#:&*4,#4<#)5-<)4#4I5#)5,+%4,#<>#3&4&#
*&%%,N###

P+G)>"#.')J.$)'#)7.:+.'#"D)
HI5#.'O5'4<)"#3&4&?&,5#.,#&#>&.)%"#,.E-%5#("Rb@#3&4&?&,5N#$'"#4<<%,#4I&4#&**5,,#
("Rb@#*&'#?5#+,53#4<#?+.%3#&#)5-<)4.'D#>)<'4#5'3N#@$F@#*I<,5#4<#+,5#GYGN#Q+)#L5?#
,.45#&%%<M,#<+)#*5'4)&%#,5)O.*5,#><%[,/#I5%-#35,[/#&'3#>.5%3#45*I'.*.&',#4<#)5-<)4#&'"#
'+E?5)#<>#>.5%3,N###
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#02#

#
HI5#)5,+%4,#&)5#,I<M'#.'#%.,4#><)E&4#&'3#4I5#+,5)#*&'#*%.*[#<'#&#*%.5'4#4<#,55#&%%#<>#.4,#
:&*4,#&'3#,<>4M&)5#.'O5'4<)"N#L5#M)<45#&#,5-&)&45#4<<%,#4I&4#*<%%5*4,#,<>4M&)5#
.'O5'4<)"#&'3#)5-<)4,#.'4<#&#3&4&?&,5#<'#4I5#G+--54#,5)O5)N#L5#&%,<#I&O5#&#)<+4.'5#
4I&4#*I5*[,#4I5#$--%5#M&))&'4"#3&45#&'3#)5-<)4,#I<M#E+*I#.,#%5>4#<'#4I5#$--%5#
M&))&'4"N#HI5#'5;4#-&D5#.,#&#,&E-%5#<>#4I5#.'><)E&4.<'#.'#<+)#L5?#,.45N#L5#&%,<#
I&O5#&#'+E?5)#<>#)5-<4,#<'#4I5#L5?#,.45#4<#I5%-#<+)#>.5%3#45&E,#E&'&D5#4I5.)#(&*,N#

#
RI<M,#&#-.*4+)5#<>#4I5#E&*I.'5/#4I5#.4#%.,4,#&%%#4I5#:&*4,N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#00#

#
$>45)#4I5#:&*4,#M5#,I<M#4I5#,<>4M&)5#.'O5'4<)"#><)#4I5#E&*I.'5N#

#
$>45)#4I5#,<>4M&)5#.'O5'4<)"/#M5#,I<M#4I5#?&,.*#-)<-5)4"#.'><)E&4.<'N#

9B*8)Q-('"-G%'-#.)
Q'5#<>#4I5#>.),4#4I.'D,#M5#3.3#?5"<'3#:&*4#.'O5'4<)"#M&,#4<#+,5#G+--54#4<#.',4&%%#&'3#
E&.'4&.'#RHQ(N#W'#&#*.)*+%&)#4M.,4/#M5#&%,<#+,5#RHQ(#4<#.',4&%%#&'3#*<'>.D+)5#
G+--54m#Q+)#,5P+5'*5#.,#4<#.',4&%%#&'3#)+'#RHQ(#<'#&#(&*N#RHQ(#4I5'#3<M'%<&3,#
4I5#%&45,4#G+--54#>)<E#<+)#.'45)'&%#,5)O5)/#.',4&%%,#.4/#*<-.5,#<+4#-+--54N*<'>#>.%5/#&'3#
,54,#+-#&#%&+'*I3#c<?#4<#)+'#-+--54#I<+)%"N#L5#4I5'#+,#G+--54#4<#[55-#4I5#RHQ(#
&--%.*&4.<',#&,#M5%%#&,#4I5#-+--54#*%.5'4/#+-#4<#3&45N##

9KR)Q-('"-G%'-#.)
L5#&%,<#+,5#G+--54#4<#.',4&%%#&'3#[55-#R$^#+-#4<#3&45N#HI5#&3E.'.,4)&4.O5#*<',<%5#
><)#E&'&D.'D#R$^#4I&4#R"E&'45*#-)<O.35,#3.3#'<4#E554#<+)#'553,/#,<#M5#'55353#&#
M&"#4<#.',4&%%#'5M#O5),.<',#<>#R$^/#&,#M5%%#&,#5',+)5#R$^#.,#.',4&%%53#&'3#)+''.'D#
-)<-5)%"N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#0C#

9#@'45"+)7.:+.'#"D)
L5#M)<45#<+4#<'5#,.E-%5#.'O5'4<)"#-)<D)&E#+,.'D#GYG#&'3#4I5#$--%5#-)<O.35#
,",45El-)<>.%5)#*<EE&'3N#,",45El-)<>.%5)#)5-<)4,#<'#&%%#D%<?&%%"#.',4&%%53#,<>4M&)5N#
Q+)#GYG#,*).-4#-&),5,#4I.,#%.,4/#&'3#,5'3,#4I5#)5,+%4,#4<#<+)#*5'4)&%#,5)O5)N#L5#+,5#
G+--54#4<#.',4&%%#4I5#,*).-4/#&'3#,54#+-#&'3#E&.'4&.'#&#%&+'*I3#c<?#4<#)+'#4I5#,*).-4#
3&.%"N#

K66,+)9#@'45"+)M6$5'+)
@$F@#<-5)&45,#&'#.'45)'&%#$--%5#R<>4M&)5#A-3&45#R5)O.*5#4<#3.,4).?+45#$--%5#
,<>4M&)5#+-3&45,#M.4I.'#@$F@N#L5#'55353#&#M&"#><)#*%.5'4,#4<#*<''5*4#&'3#*I5*[#
4I5#,5)O5)/#&'3#4I5'#&%%<M#-&4*I5,#4<#?5#.',4&%%53#M.4I<+4#)5P+.).'D#&'#&3E.'#
-&,,M<)3/#?+4#'<4#><)*.'D#&#)5?<<4#&4#&)?.4)&)"#4.E5,N##

L5#,<%O5#4I.,#*I&%%5'D5#M.4I#&'#$--%5R*).-4#&--%.*&4.<'#4I&4#.,#.',4&%%53#?"#G+--54N#
G+--54#&%,<#E&.'4&.',#&#%&+'*I3#c<?#4I&4#%&+'*I5,#4I5#$--%5R*).-4#3&.%"N#R.'*5#4I5#
$--%5R*).-4#.,#%&+'*I53#?"#-+--54/#.4q,#)+'#M.4I#)<<4#-).O.%5D5,N#HI5#$--%5R*).-4#
&%%<M,#4I5#+,5)#4<#*&'*5%#J4I+,#M.%%#?5#-)<E-453#&D&.'#4I5#'5;4#3&"K/#<)#4<#)+'#4I5#
$--%5#W',4&%%5)#&'3#.',4&%%#4I5#-&4*I5,N##

85&)7C5=-.=)
@$F@#I&,#&#,4&'3&)3#,54#<>#,<>4M&)5#M5#.',4&%%#<'#&%%#(&*,N#L5#35O5%<-53#&#-+--54#
5'O.)<'E5'4#4I&4#&%%<M,#+,#4<#.',4&%%#&%%#4I.,#*<)5#,<>4M&)5#<'#&#'5M%"#.E&D53#(&*#
M.4I#<'5#*<EE&'3#%.'5N#HI5#&3O&'4&D5#<>#+,.'D#G+--54#4<#.',4&%%#&%%#4I5#*<)5#
,<>4M&)5#.,#E&'"#><%3N#
• A-3&4.'D#<'5#-&*[&D5#3<5,#'<4#)5P+.)5#+,#4<#)56E&[5#&'#.E&D5N#
• LI5'#&#'5M#+-3&45#.,#&O&.%&?%5/#M5#<'%"#'553#4<#+-3&45#4I5#-&*[&D5#<'#4I5#
-+--54#,5)O5)N#
• L5#3<'q4#3<#4I.,#"54/#?+4#<'*5#-+--54#I&,#.',4&%%53#4I5#-&*[&D5,/#E&.'4&.'#
4I5E#4I)<+DI#-+--54#.,#'<4#4I&4#I&)3N#HI5#)5&,<'#M5#I5,.4&45#.,#4I&4#,<E5#
+-D)&35,#*&'#*I&'D5#>+'*4.<'&%.4"/#&'3#M5#E&"#I&O5#+,5),#4I&4#)5%"#<'#4I5#
<%3#>+'*4.<'&%.4"N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#0T#

?#::0-:'?#+$-#1'
J.:-"#.C+.'()
@$F@#+,5,#5'O.)<'E5'4,#><)#?<4I#&#,5-&)&4.<'#?54M55'#35O5%<-E5'4#&'3#
-)<3+*4.<'/#&,#M5%%#&,#4<#&%%<M#3.>>5)5'4#,+--<)4#D)<+-,#-)<O.35#4I5.)#<M'#
*<'>.D+)&4.<',#4<#4I5.)#*<E-+45),N##

Q-"+&'#"D)9'"%&'%"+)
G+--54#I&,#&#35>&+%4#3.)5*4<)"#,4)+*4+)5#4I&4#M<)[,#M5%%#><)#&#,.'D%5#-+--54#
35O5%<-5)/#<)#><)#&#45&E#<>#-+--54#35O5%<-5),#4I&4#I&O5#4I5#,&E5#&**5,,#).DI4,#<'#
4I5#,5)O5)/#?+4#*&)5#&'3#><)54I<+DI4#M&)5#)5P+.)53#4<#35O5%<-#&#3.)5*4<)"#,4)+*4+)5#
&'3#$=@,##4<#&%%<M#><)#E+%4.-%5#35O5%<-5),#&*)<,,#E+%4.-%5#45&E,#4<#M<)[#<'#
E+%4.-%5#5'O.)<'E5'4,#<'#4I5#,&E5#-+--54#,5)O5)N#

L5#*I<,5#+,5#fi)<+-,#<'#<+)#(&*#QR#S#,5)O5)#4<#,4<)5#&%%#<+)#-+--54#*<35N#L5#I&O5#
&%%#4I5#-)<3+*4.<'#*<35#.'#fi)<+-,fG)<3+*4.<'fnE<3+%5,o#&'3#&#,.E.%&)#-&4I#><)#
35O5%<-E5'4N#L5#+,5#R5)O5)#$3E.'#4<#,54#4I5#$=@,#><)#4I5,5#><%35)#&--)<-).&45%"N#
L5#+,5#$=@X,#&'3#'<4#-<,.;#-5)E.,,.<',#,.'*5#$=@,#*&'#?5#,54#4<#.'I5).4#
-5)E.,,.<',N#

<#.'"-G%'-.=)'#)';+)!%66+')6"#S+&')';"#%=;)I7B)
W#I&O5#4<#&3E.4#4I&4#W#I&O5'X4#D<'5#4I)<+DI#4I.,#-)<*5,,/#?+4#E"#*<%%5&D+5/#B<"#
F.5%,5'#I&,N#W45E,#4<#[55-#.'#E.'3#MI5'#*<'4).?+4.'D#4<#4I5#-+--54#-)<c5*4#.'*%+35#
*<35#)5%5&,5#)5,4).*4.<',#"<+)#*<E-&'"#E&"#.E-<,5/#+'35),4&'3.'D#iWHC1/#
+'35),4&'3.'D#4I5#-+--54#35O5%<-E5'4#%.>5*"*%5C2/#&'3#c<.'.'D#4I5#-+--54#
35O5%<-5),#E&.%.'D#%.,4C0N#W#M<+%3#,&"#4I5#-)<*5,,#M&,'X4#4).O.&%/#?+4#<'*5#>.D+)53#<+4/#
.4X,#&#M<)[&?%5#-)<*5,,N##

9+''-.=)%6)6%66+'C5('+"$)#.)5)85&)(+":+")
:<)#4I5#E<,4#-&)4/#+,.'D#&#(&*#,5)O5)#I&,#'<4#?55'#&'#.,,+5N#Y&O.'D#-+--54E&,45)3#
&+4<,4&)4#)5P+.)5,#4I5#,54+-#<>#&#%&+'*I3&5E<'/#MI.*I#.,#3.>>5)5'4#>)<E#<4I5)#AFWS#
,",45E,N#$'<4I5)#.,,+5#M5#)&'#.'4<#M&,#I&O.'D#4<#E&'+&%%"#*)5&45#4I5#-+--54#+,5)#
&'3#D)<+-#><)#-+--54E&,45)3N#&'3#>.'&%%"/#35&%.'D#M.4I#4I5#("Rb@#?.'&).5,#M&,#&%,<#
&#?.4#<>#&#*I<)5#+'4.%#M5#D<4#.4#&%%#3<*+E5'453N##

########################################################
C1#iWH#.,#,<+)*5#*<35#E&'&D5E5'4#,",45E#,.E.%&)#4<#R^F#<)#=^RN#
C2#I44-9ff-)<c5*4,N-+--54%&?,N*<Ef-)<c5*4,f-+--54fM.[.fa5O5%<-E5'4la5O5%<-E5'4l@.>5*"*%5#
C0#I44-9ffD)<+-,ND<<D%5N*<EfD)<+-f-+--54635Or-%.s2#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#0`#

<,-+.')7Q)
G+--54#+'.P+5%"#.35'4.>.5,#&#*%.5'4/#<)#'<35/#?"#&'#.35'4.>.5)N#HI.,#.35'4.>.5)#.,#+,53#&,#
4I5#'&E5#<>#4I5#*5)4.>.*&45#><)#4I5#'<35/#,<#-+--54#*&%%,#.4#*5)4'&E5N#!"#35>&+%4/#4I5#
*5)4'&E5#.,#4I5#:baF#<>#4I5#'<35N#HI.,#,",45E#-)<?&?%"#M<)[,#>.'5#.>#&#,4&4.*#,54#<>#
,5)O5),#&)5#?5.'D#E&'&D53/#?+4#.'#@$F@,#3"'&E.*#5'O.)<'E5'4#M.4I#01116C111#
(&*,/#I<,4#'&E5,#&)5#&'#+')5%.&?%5#+'.P+5#.35'4.>.5)N#(<)5<O5)/#M5#.'45'3#<'#
.E-%5E5'4.'D#&#I.,4<)"#3&4&?&,5/#&'3#I<,4#'&E5,#&)5#'<4#&#D<<3#.35'4.>.5)#><)#
*<E-+45),#<O5)#4.E5N#:.'&%%"/#E&'"#<>#<+)#(&*,#I&O5#E<)5#4I&'#<'5#I<,4#'&E5/#
5,-5*.&%%"#4I<,5#%&-4<-,#4I&4#E<O5#?54M55'#E+%4.-%5#%<*&4.<',N#

H<#,<%O5#4I.,#*I&%%5'D5#M5#35*.353#4<#+,5#@$F@#-)<-5)4"#'+E?5)#&,#4I5#*5)4'&E5N#
R.'*5#M5#,4<)5#4I5#-)<-5)4"#'+E?5)#.'#O')&E/#D544.'D#.4#.,#5&,"#O.&#4I5#*<EE&'3#
%.'5N#W'#4I5#5O5'#4I5#-)<-5)"#'+E?5)#.,#'<4#&O&.%&?%5/#M5#>&%%#?&*[#<'#4I5#,5).&%#
'+E?5)/#4I5'#I<,4'&E5/#4I5'#4I5#54I5)'54#&33)5,,N##

HI5#*5)4'&E5#*&'#?5#,4<)53#.'#4I5#-+--54N*<'>#>.%5/#<)#*&'#?5#-&,,53#<'#4I5#
*<EE&'3#%.'5#><)#-+--543N#L5#*I<,5#4<#-&,,#.4#<'#4I5#*<EE&'3#%.'5N#L5#35O5%<-53#
&#-+--543N,I#,*).-4#M5#+,5#4<#%&+'*I#4I5#-+--54#*%.5'4#4I&4#>.D+)5,#<+4#MI&4#4I5#
*5)4'&E5#,I<+%3#?5N#L5#&%,<#&%%<M#><)#&#U6OU#&)D+E5'4#4<#4I5#,*).-4#4<#)+'#-+--543#
.'#35?+D#E<35#4<#I5%-#<+)#>.5%3#45*I,#3.&D'<,5#.,,+5,N#HI5#,*).-4#&%,<#35&%,#M.4I#4I5#
.,,+5#<>#*%5&'.'D#&#*%.5'4#*5)4.>.*&45#>)<E#4I5#,5)O5)#J3.,*+,,53#%&45)KN#HI5#,*).-4#
,4<)53#4I5#*5)4'&E5#.'#'O)&E#,<#.4#*&'#?5#P+.*[%"#)54).5O53N#

HI5#?<44<E#%.'5#I5)5#.,#4I&4#.>#I<,4#'&E5#.,#&#D<<3#.35'4.>.5)#><)#"<+)#-+)-<,5,/#4I5'#
-+--543#I&'3%5,#4I&4#<+4#<>#4I5#?<;N#:<)#+,5/#I<,4#'&E5,#*I&'D5#4<<#<>45'#><)#.4#4<#
?5#+,5>+%#4<#+,/#,<#M5#I&O5#4<#*<E5#+-#M.4I#&#3.>>5)5'4#.35'4.>.5)#&'3#M&"#4<#
.E-%5E5'4#.4N#

###

T#G)F5%.&;)B-C+)H5.$#C-U5'-#.)
G+--543#M.%%#)+'#5O5)"#C1#E.'+45,N#W>#,4&)453#>)<E#&#M5%%#35,.D'53#%&+'*I3#c<?#&'3#
4I5#[55-#&%.O5#>%&DCC#.,#+,53/#4I)5#,I<+%3#?5#,+>>.*.5'4#)&'3<E.V&4.<'#.'#%&+'*I#4.E5#
,<#4I5#,5)O5)#.,#'<4#I.4#4<<#I&)3#&4#&'"#<'5#4.E5N#

L5#M&'453#4<#?5#,+)5#-+--543#M&,#)+''.'D/#,<#M5#3<#'<4#)5%"#<'#-+--543#.'#
3&5E<'#E<35N#L5#+,5#&#%+'*I3#c<?#4<#)+'#<+)#-+--543N,I#,*).-4#4<#%&+'*I#-+--543#
5O5)"#I<+)N#L5#3.3'X4#M&'4#4I5#c<?#)+''.'D#&4#4I5#,&E5#4.E5#&*)<,,#&%%#<+)#
E&*I.'5,/#,<#M5#,54#4I5#I<+)%"#%&+'*I#4.E5#4<#&#)&'3<E#'+E?5)#?54M55'#1#&'3#71N##

########################################################
CC#R559#E&'#%&+'*I3N-%.,4#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#07#

!%"=-.=)85&;-.+()
G+--54#I&,#'<#E5*I&'.,E#4<#&+4<6)5E<O5#E&*I.'5,#4I&4#I&O5'X4#*I5*[53#.'#4<#4I5#
-+--54#,5)O5)#.'#&#MI.%5N#L5#&)5#.'#4I5#-)<*5,,#<>#M).4.'D#&#,5).5,#<>#,*).-4,#4<#'<4.>"#
>.5%3#45&E,#<>#4I5#&D5#<>#4I5.)#-+--54#*%.5'4,/#&'3#4I5'#4<#)5E<O5#*%.5'4,#'<4#,55'#.'#
g1#3&",#<)#E<)5N##

8D9EF)1-.5"-+()
$,#3.,*+,,53#.'#4I5#!&,.*#WE-%5E5'4&4.<'#,5*4.<'#5&)%.5)/#MI5'#+,.'D#(&*#QR#S#&,#
4I5#,5)O5)#&'3#+,.'D#4I5#,4<)5*<'>.D#.'O5'4<)"#3&4&?&,5#M.4I#("Rb@/#,<E5#("Rb@#
?.'&).5,#&)5#'55353N###

H%GD)IJ89)
F<4#E+*I#&#%5,,<'/#?+4#W#I&3#'<4#M<)[53#M.4I#B+?"#iZ(R#?5><)5N#B.DI4#'<M#W#
?5%.5O5#G+--54#*&'#+,5#4I5#%&45,4#O5),.<'#<>#&%%#4I5#)5P+.)53#iZ(R/#?+4#><)#&#%<'D#
4.E5#*5)4&.'#iZ(R#I&3#4<#?5#&4#,-5*.>.*#O5),.<',/#'<4#&%%#<>#MI.*I#M5)5#4I5#%&45,4N#
B5&3.'D#4I5#UD5EU#E&'#-&D5#M&,#'55353/#&'3#4I5'#)5,5&)*I.'D#MI*.I#iZ(R#'553,#
4<#?5#.',4&%%53N#

!%66+'$)"%.)S#G)
(&*#QR#S#*&'#+,5#*)<'/#?+4#.4X,#*<',.35)53#35-)5*&453#<'#4I5#(&*N#HI5#M&"#E<)5#
*<<%#(&*#L&"#.,#4<#+,5#%&+'*I3N#L5#+,5#%&+'*I3#3&5E<',#><)#?<4I#4I5#
-+--54E&,45)3#,5)O5)#JMI5'5O5)#4I5#,5)O5)#)5?<<4,K#&'3#><)#4I5#*%.5'4,#J<'*5#-5)#
I<+)N#

<,+5.-.=)#,$)&,-+.')&+"'-@-&5'+()
(&'&D.'D#*%.5'4#*5)4.>.*&45,#<'#4I5#-+--54-&,45)3#,5)O5)#*&'#?5#&#O5)"#%&?<)#
.'45',.O5#4&,[N#L.4I#&#,4&4.*#'+E?5)#<>#['<M'#E&*I.'5,/#4I5#4&,[#E.DI4#?5#
E&'&D5&?%5/#?+4#M.4I#4I<+,&'3,#<>#E&*I.'5,/#3<V5',#?5.'D#&3353#<)#)5E<O53#
M55[%"/#4I5#4&,[#.,#<'5#).-5#><)#&+4<E&4.<'N##

HI5#.,,+5#*<'*5)',#I<M#4I5#-+--54#*%.5'4#&'3#,5)O5)#*<EE+'.*&45N#LI5'#4I5#
-+--54E&,45)3#3&5E<'#.,#>.),4#)+'/#.4#*)5&45,#&#*5)4.>.*&45#><)#4I5#,5)O5)N#LI5'#4I5#
*%.5'4#.,#>.),4#)+'/#.4#*)5&45,#&#*5)4.>.*&45#><)#4I5#*%.5'4N#LI5'#&#*%.5'4#*<''5*4,#4<#4I5#
,5)O5)/#4I5#*%.5'4#D54,#4I5#,5)O5)X,#*5)4.>.*&45#&'3#4I5#*%.5'4#)5P+5,4,#4I&4#.4,#
*5)4.>.*&45#?5#,.D'53#?"#4I5#,5)O5)N#$4#4I&4#-<.'4#4I5#*%.5'4#['<M,#&?<+4#4I5#,5)O5)#
&'3#4I5#,5)O5)#['<M,#&?<+4#4I5#*%.5'4/#&'3#*<EE+'.*&4.<'#*&'#?5D.'N#

HI5#,.D'.'D#<>#4I5#*%.5'4#)5P+5,4#*&'#?5#I&'3%53#E&'+&%%"#+,.'D#-+--54*&/#<)#*&'#?5#
&+4<E&4.*&%%"#I&'3%53#+,.'D#4I5#&+4<,.D'#>5&4+)5#3.,*+,,53#5&)%.5)N#W>#4I5#'54M<)[#<)#
,5)O5)#.,#'<4#-)<45*453#?"#&#>.)5M&%%/#&#)<+D5#E&*I.'5#E.DI4#)5P+5,4#*<'>.D+)&4.<'#
.'><)E&4.<'#>)<E#4I5#,5)O5)#&'3#4I+,#)5*5.O5#,5*+).4"#,.D'.>.*&'4#<)#.'45%%5*4+&%%"#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#0_#
-)<45*453#>.%5,N#:<)#4I.,#)5&,<'/#&+4<,.D'#.,#3.,*<+)&D53N#L5#+,5#.4#&4#@$F@#,.'*5#<+)#
5'4.)5#'54M<)[#.,#-)<45*453#?"#&#-5).E545)#>.)5M&%%N#L5#&%,<#%.E.4#<+)#,.D'.'D#4<#
hN%&'%ND<ON#HI5#.,,+5#&).,5,#MI5'#&#E&*I.'5#+,5,#&#'5M#*5)4.>.*&45N#HI.,#I&--5',#.>#
4I5#*5)4.>.*&45#.,#35%5453#>)<E#4I5#*%.5'4#J,&"#4I)<+DI#)5?+.%3.'D#4I5#E&*I.'5KN#W>#4I5#
*%.5'4#&445E-4,#4<#*<EE+'.*&45#M.4I#4I5#,5)O5)#+,.'D#&#'5M#*5)4.>.*&45/#4I5#,5)O5)#
M.%%#,55#4I.,#&,#3.>>5)5'4#&,#4I5#<'5#<'#>.%5#&'3#)5c5*4#*<EE+'.*&4.<',#M.4I#4I5#*%.5'4N#

H<#&E5%.<)&45##4I.,#,.4+&4.<'/#<+)#-+--543N,I#%&+'*I#,*).-4#*I5*[,#4<#,55#.>#4I5#5))<)#
E5,,&D5#>)<E#4I5#,5)O5)#.'3.*&45,#4I5#*5)4.>.*&45#.,#.'O&%.3N#W>#4I.,#.,#3545*453/#4I5#
*%.5'4#)5P+5,4,#4I5#,5)O5)#*%5&'#4I5#*5)4.>.*&45#>)<E#4I5#,5)O5)N#HI5#'5;4#4.E5#4I5#
*%.5'4#)+',/#4I5#'5M#*5)4.>.*&45#*&'#?5#&**5-453#?"#4I5#,5)O5)N#

L5#&%,<#%5&)'53#4I&4#4I5#lMMM#+,5)#'553,#4<#I&O5#,+3<#).DI4,#4<#)+'#4I5#-+--54*&#
*<EE&'3N#L5#53.453#,+3<5),#4<#&%%<M#4I.,N#R55#$--5'3.;#0#><)#I<M#&'3#4I5#,*).-4N#

Q'5#M<+%3#'<4#M&'4#4<#4&[5#4I.,#&--)<&*I#<'#&#'54M<)[#3.)5*4%"#*<''5*453#4<#4I5#
.'45)'54/#?+4#.'#&#*<'4)<%%53#5'O.)<'E5'4/#M5#>55%#4I.,#&+4<E&4.<'#.,#,&>5N#

8D9EF)9#&L+')
LI5'#)+''.'D#4I5#.'*%+353#("Rb@#,5)O5)#>)<E#(&*#QR#S#R5)O5)/#4I5#35>&+%4#("Rb@#
,<*[54#.,#%<*&453#&4#fO&)fE",P%fE",P%N,<*[N#HI.,#.,#'<4#,4&'3&)3/#,<#.4X,#&#D<<3#.35&#
4<#'<45#4I.,N#HI5#,<*[54#-&4I#.,#3.,-%&"53#.'#4I5#("Rb@#%<D#.'#R5)O5)#$3E.'#MI5'#
4I5#,5)O.*5#.,#,4&)453N#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#08#

*,0:%-.'()02.)4:'
HI5)5#&)5#'<#*<'*%+,.<',#4<#?5#3)&M'#>)<E#4I.,#-&-5)#<4I5)#4I&'#G+--54#.,#&#O.&?%5#
<-4.<'#><)#E&'&D.'D#(&*,N#@$F@#E&'&D5,#&?<+4#0111#(&*,#'<M/#&'3#M5#5;-5*4#4<#
D)<M#4<#&?<+4#C`11N#

$#(&*#,5)O5)#.,#'<4#)5P+.)53/#?+4#><)#(&*#><%[,/#4I5#>&E.%.&).4"#<>#4I5#QR#.,#
&--)5*.&453N#(&*#QR#S#*%.5'4/#AFWS/#<)#@.'+;#*&'#5&,.%"#?5#+,53#><)#4I5#,5)O5)N#

W>#D.O5'#4I5#<--<)4+'.4"/#W#M<+%3#)5*<EE5'3#4&[.'D#&#-+--54#*%&,,#>)<E#G+--54#
@&?,N#$%4I<+DI#'<4#)5P+.)53/#4I5#*%&,,#<>>5)53#&#?<<4#*&E-#&--)<&*I#4<#D544.'D#+-#4<#
,-553N##
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#0g#

@G024'4)#'@24)0$'

#W#&E#&#R<%+4.<',#$)*I.45*4#&4#4I5#@<,#$%&E<,#F&4.<'&%#@&?<)&4<)"N#
W#D)&3+&453#>)<E#A=#!5)[5%5"#.'#2g87#M.4I#&#!NRN#.'#G<%.4.*&%#Z*<'<E"#<>#F&4.<'&%#
B5,<+)*5,N#W#M<)[53#&4#$--%5#=<E-+45)/#W'*N#&,#&#3&4&?&,5#&--%.*&4.<'#35O5%<-5)#
>)<E#2g8_#+'4.%#2ggCN#LI.%5#&4#$--%5#W#5&)'53#E"#(N!N$N#>)<E#&#c<.'4#$--%5#f#R&'#
j<,5#R4&45#-)<D)&EN#

W'#2ggC#W#*&E5#4<#@<,#$%&E<,/#F(#4<#M<)[#&4#4I5#F&4.<'&%#@&?#&,#&#3&4&?&,5#
&--%.*&4.<'#35O5%<-5)N#:<)#&?<+4#45'#"5&),#W#35O5%<-53#&--%.*&4.<',#+,.'D#Ta/#QE'.,#
_/#Q)&*%5/#&'3#5O5'4+&%%"#@<4+,#F<45,N#W'#0110#W#E&35#4I5#,M.4*I#4<#,",45E,#
&3E.'.,4)&4.<'N#W#E&'&D53#@$F@X,#R<+)*5:<)D5#Z'45)-).,5#Z3.4.<'#,5)O5),#&'3#
,5)O.*5,#J+,.'D#B53#Y&4#@.'+;K#><)#&#>5M#"5&),/#4I5'#W#?5*&E5#@$F@X,#%5&3#(&*#
-5),<'N#

W'#011`#W#-+?%.,I53#&#-&-5)#<'#I<M#4<#+,5#(&*#><)#3.,[%5,,#?<<4.'DNCT#

W'#0118#W#%5&3#4I5#=5'45)#><)#W'45)'54#R5*+).4"X,#(&*#?5'*IE&)[#45&EN#HI5#45&E#
-)<3+*53#4I5#(&*#QR#S#@5<-&)3#@5O5%#2#&'3#@5O5%#0#!5'*IE&)[C`/#MI.*I#.,#M.35%"#
+,53#4<#I&)35'#&'3#*<'>.D+)5#(&*#&*)<,,#D<O5)'E5'4/#.'3+,4)"/#&'3#53+*&4.<'N#W#
&%,<#%5&3#4I5#R'<M#@5<-&)3#*<EE.4455/#&%4I<+DI#M<)[#.,#-)<D)5,,.'D#,%<M.'DN#

("#*+))5'4#c<?#.,#4<#)5,5&)*I#&'3#M).45#@$F@X,#=<'>.D+)&4.<'#&'3#R5*+).4"#
i+.35%.'5,#><)#(&*#QR#SN#W#&%,<#35O5%<-53#&'3#E&.'4&.'#4I5#4<<%#M5#+,5#4<#I&)35'#
&'3#*<'>.D+)5#(&*,N#L.4I#B<"#F.5%,5'/#W#E&'&D5#@$F@X,#(&*#*<'>.D+)&4.<'#
E&'&D5E5'4#,5)O5),N#W#&%,<#I5%-#35O5%<-#@$F@X,#*<E-%.&'*5#&'3#*"?5)#,5*+).4"#
-<%.*.5,N##

########################################################
CT#I44-9ffMMMN&>-`T8N*<Ef&)4.*%5N-I-r,4<)"s011`1`0128C8C2g1C#
C`#I44-9ff*.,5*+).4"N<)Df5'6+,fr)<+45s3<M'%<&3,N?5'*IE&)[,#
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#C1#

@>>#-1%J'KL'>2>>#4M:)'
G%5&,5#'<45#4I&4#%.'5#M)&--.'D#.'#(R#L<)3#E&"#I&O5#&3353#)54+)',#4<#4I.,#*<35N#
#!/bin/sh

# this script is run from a launchd job

# use -v for verbos output


# mainly for debugging

# must be run as root


WHOAMI=`whoami`
if [ "$WHOAMI" != "root" ]; then
echo "The puppet.sh script (part of STOM) must be run as root. You are
$WHOAMI"
exit 0
fi

# need to make sure /usr/sbin is in the path, or puppet and facter will not
run
export PATH=$PATH:/usr/sbin

# avoid unsightly errors in the logs


export TERM_PROGRAM=Apple_Terminal
export TERM=xterm-color

# this suffix is added to the value to make it look like


# a FQDN. This allows for auto sign to work on the server
SUFFIX=example.gov
if [ "$1" = "-v" ]; then echo "SUFFIX set to $SUFFIX "; fi

# this is the server to sent a puppetca clean to


SERVER=puppet.example.gov
if [ "$1" = "-v" ]; then echo "SERVER set to $SERVER "; fi

# see if the MAC_UID is in nvram already


MAC_UID=`/usr/sbin/nvram MAC_UID 2>/dev/null | awk '{print $2}'`
if [ -z "$MAC_UID" ]; then
# flag that nothing is in nvram yet
NVRAM="no"
if [ "$1" = "-v" ]; then echo "MAC_UID not found in nvram"; fi
fi

# get the serial number for this Mac


if [ -z "$MAC_UID" ]; then
MAC_UID=`facter | grep sp_serial_number | awk '{print $3}' | sed
's/[\/\~\!\@\#\$\%\^\&\*\(\)\+\=]/_/g'`

# test to see if the sreial number is fubar


FUBAR=`echo $MAC_UID | grep -i system`
if [ -n "$FUBAR" ]; then
MAC_UID=""
fi
fi

# if we got nothing, get the property number]


# property number is a bar code value that we use and set separately
# delete this section if you don't set asset_id in nvram
if [ -z "$MAC_UID" ]; then
if [ "$1" = "-v" ]; then echo "No serial number found, checking
asset_id"; fi
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#C2#
MAC_UID=`/usr/sbin/nvram asset_id 2>/dev/null | awk '{print $2}'`
fi

# if the MAC_UID is still null


# get the primary MAC address
if [ -z "$MAC_UID" ]; then
if [ "$1" = "-v" ]; then echo "No asset_id found, checking primary MAC
address"; fi
MAC_UID=`facter | grep 'macaddress =>' | awk '{print $3}'`
fi

# if all the above fails, get the hostname


if [ -z "$MAC_UID" ]; then
if [ "$1" = "-v" ]; then echo "No primary MAC address found, using
hostname for MAC_UID"; fi
MAC_UID=`hostname`
fi

# assuming we have something, write it to nvram


# getting it from nvram is much faster and is limited to this
# specific computer
if [ "$NVRAM" == 'no' ]; then
# cert names must be lowercase
MAC_UID=`echo $MAC_UID | tr "[:upper:]" "[:lower:]"`
MAC_UID=${MAC_UID}.${SUFFIX}
/usr/sbin/nvram MAC_UID=${MAC_UID}
fi

if [ "$1" = "-v" ]; then


tempfoo=`basename $0`
PUPPET_RESULTS_FILE=`mktemp /tmp/${tempfoo}.XXXXXX`
touch $PUPPET_RESULTS_FILE
echo "puppetd -o --no-daemonize -v --certname=$MAC_UID --debug"
puppetd -o --no-daemonize -v --certname=$MAC_UID --debug 2>&1 |
/usr/bin/tee $PUPPET_RESULTS_FILE
#cat $PUPPET_RESULTS_FILE
CERT_ERROR_RESULTS_1=`cat $PUPPET_RESULTS_FILE | grep 'Certificate
request does not match existing certificate'`
CERT_ERROR_RESULTS_2=`cat $PUPPET_RESULTS_FILE | grep 'Retrieved
certificate does not match private key'`
rm $PUPPET_RESULTS_FILE
else

RESULTS=`puppetd -o --no-daemonize -v --certname=$MAC_UID 2>&1`


CERT_ERROR_RESULTS_1=`echo $RESULTS | grep 'Certificate request does not
match existing certificate'`
CERT_ERROR_RESULTS_2=`echo $RESULTS | grep 'Retrieved certificate does
not match private key'`
fi

# this cert error says the key on the client has changed, so need to clean
the cert on the server
if [ -n "$CERT_ERROR_RESULTS_1" ]; then
CMD="http://${SERVER}/cgi-bin/cleanCert.rb?certname=${MAC_UID}"
if [ "$1" = "-v" ]; then echo "Sleeping for 10 seconds, then cleaning
cert on server"; fi
sleep 10;
if [ "$1" = "-v" ]; then echo "curl $CMD"; fi
curl "$CMD"
fi

# this is also a cleaning issue, but the server needs to be cleaned and the
client SSL cert needs to be cleaned
if [ -n "$CERT_ERROR_RESULTS_2" ]; then
# clean the cert on the server
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#C0#
CMD="http://${SERVER}/cgi-bin/cleanCert.rb?certname=${MAC_UID}"
if [ "$1" = "-v" ]; then echo "Sleeping for 10 seconds, then cleaning
cert on server"; fi
sleep 10;
if [ "$1" = "-v" ]; then echo "curl $CMD"; fi
curl "$CMD"
# clear the local cached cert
if [ "$1" = "-v" ]; then echo "Cleaning local cached cert"; fi
rm -rf /etc/puppet/ssl/certs/${MAC_UID}.pem
if [ "$1" = "-v" ]; then echo "Run puppet again and it should work now";
fi

# all should be good on the next puppet run


fi
(&*#=<'>.D+)&4.<'#(&'&D5E5'4#&4#@$F@# # G&D5#CC#

@>>#-1%J'NL'3,#+-*#$4M$G'
#!/usr/bin/ruby

# clearCert.rb
# cgi to clean a cert
# note: _www needs to have sudo rights to use puppetca
# visudo
# www ALL = NOPASSWD: /usr/bin/puppetca, !/usr/bin/puppetca --clean --all

class Puppetca
# removes old certificate if it exists
# parameter is the certname to use
# need to allow the _www user to use sudo with the puppetca command
# added using visudo
# _www ALL = NOPASSWD: /usr/sbin/puppetca, !/usr/sbin/puppetca --clean
--all
def self.clean certname, addr
command = "/usr/bin/sudo /usr/sbin/puppetca --clean #{certname}"
%x{#{command}}
command = "logger '#{addr} cleaned #{certname}'"
%x{#{command}}
return true
end
end

=begin
CGI starts here
=end

# get the value of the passed param in the URL Query_string


require 'cgi'
cgi=CGI.new
certname = cgi["certname"]

# define the characters that are allow to avoid an injection attack


# 0-9, a-z, period, dash, and colon are allowed. All else is not
pattern = /[^a-z0-9.\-:]/
# determine if any other characters are in the certname
reject = (certname =~ pattern) ? 1 : 0

if ((reject == 0) && Puppetca.clean(certname, ENV['REMOTE_ADDR']))


cgi.out("status" => "OK", "connection" => "close") {"OK #{certname}
cleaned\n"}
else
cgi.out("status" => "BAD_REQUEST", "connection" => "close") {"Not
Processed: #{certname}\n"}
end

You might also like