"""存儲全部主機""" hostname = models.CharField(max_length=64) ip_addr = models.GenericIPAddressField(unique=True) port = models.PositiveSmallIntegerField(default=22) idc = models.ForeignKey("IDC") enabled = models.BooleanField(default=True) #是否已啓用,表明這臺機器是否能登錄 def __str__(self): return self.ip_addr
一、hostname須要惟一的?python
它不必定惟一,有多是重的web
二、這臺機器的用戶名密碼要不要在這存?算法
不用,由於主機和用戶名密碼是一對多的 關係,一條存的下嗎?
是否已啓用,表明這臺機器是否能登錄django
class IDC(models.Model): name = models.CharField(max_length=64,unique=True) def __str__(self): return self.name
一我的管理500臺機器我給他一個一個添加嗎?,我是否是要建立一個主機組app
class HostGroup(models.Model): """主機組""" name = models.CharField(max_length=64, unique=True) hosts = models.ManyToManyField("Host") def __str__(self): return self.name
有些遠程的主機不能密鑰,因此必須存密碼ssh
class RemoteUser(models.Model): """存儲遠程用戶名密""" username = models.CharField(max_length=64) auth_type_choices = ((0,'ssh/password'),(1,'ssh/key')) auth_type = models.SmallIntegerField(choices=auth_type_choices,default=0) password = models.CharField(max_length=128,blank=True,null=True) hosts = models.ManyToManyField("Host") def __str__(self): return "%s(%s)%s" %( self.username,self.get_auth_type_display(),self.password)
一、username要不要惟一?加密
爲何不用,這個帳戶裏面存的是多臺機器的用戶名密碼spa
二、可不能夠有密鑰和密碼?設計
有些機器用密碼,有些機器用密碼,你總的區分吧!blog
三、password在這個存的是什麼格式的?
四、若是選擇是密鑰的時候?還須要存用戶名和密碼嗎?
不須要
class UserProfile(models.Model): """堡壘機的帳戶""" user = models.OneToOneField(User) name = models.CharField(max_length=64) bind_hosts = models.ManyToManyField("BindHost",blank=True) host_groups = models.ManyToManyField(HostGroup) def __str__(self): return self.name